大数据企业学习篇01之---Linux的那些事
2017-10-30 17:46
351 查看
6.while read line
从文本中读取每一行
例子:
2.字符串
1)单引号
2)双引号
注意:双引号中可以有变量,又可以有转义字符
3)拼接字符串
4)获取字符串的长度
5) 提取子字符串
6)查找子字符串
3.shell 数组
1)定义数组(用括号表示数组,数组元素用空格分隔)
2)读取数组
输出所有元素:
3)获取数组的长度
获得数组中单个元素的长度
4.位置参数
1)n,n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推
例如:定义一个test.sh
#!/bin/sh
echo ”0 ”
echo ” 1”echo”2 “
2)$# 传递参数的个数
3)$? 显示最后命令的退出状态,0表示没有错误,其他任何值表示有错误。
4.echo 显示命令的执行结果
5.流程控制语句
1)if
if [条件判断式];then
command;
fi
或者
if [条件判断式];then
command;
elif [条件判断式];then
command;
else
command
fi
2)for
格式:for var in values
do
command
done
下面已计算1到10的和为例
3)while
格式:while[condition]
do
command
done
以求1-10的和为例:
例如:在小僵尸用户下创建定时任务
1)每分钟执行一次,并将文件写入到指定文件中
2)列出所有的定时任务
3)删除所有的定时任务
4)crontab的基本定义
语法:* * * * * command
第一列:分钟,取值范围为1~59
第二列:小时,取值范围为0~23
第三列:日, 取值范围为1-31
第四列:月, 取值范围为1-12
第五列:星期,取值范围为0-6(其中0表示星期天)
注意:(假设前5个星分别对应c1-c5)
1.当c1为* 表示每分钟执行,当c2为*时表示每小时都要执行
例如:每分钟执行一次test.sh这个脚本
解析:>main.log 2>&1 &
首先,左边的表示是标准输入重定向到文件main.log, 2>&1将错误输出重定向到标准输出,&表示放到后台运行。
注意(配置定时任务时):
1.在SHELL中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到ORACLE的环境变量,这是因为crontab环境变量问题,Crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置。
2.尽量所有的文件都采用完全路径方式,避免使用相对路径。
从文本中读取每一行
例子:
while read line do echo "drop table ${line}_bak;">>2.txt #echo "被删除的表为:" #echo ${line}'_bak' done < delete.txt
一.shell必知必会
1.变量 1)**变量的命名**:变量名必须以**字母或者下划线开头**,后面可以跟**数字、字母、下划线**,**任何其他字符**都标志变量的结束。 2)变量名关于大小写**敏感**。 3)**变量的类型**:变量可分为**本地变量**和**环境变量**,**本地变量**只在创建它的shell程序中有用,**环境变量**则在shell中的所有用户进程中有效,也被称为**全局变量**。按照惯例需要大写。 4)使用变量,只需要在已定义的变量前加$即可
name='xiaojiangshi' echo $name //xiaojiangshi echo ${name} //xiaojiangshi(推荐使用,{}用于识别变量的边界)
5)修改(重新定义变量) name='xiaojiangshi' echo ${name} //xiaojiangshi name='taobao' echo $name //taobao ***注意:***只有在使用变量时才要加$,二次复制不需要 6)删除变量 echo $name //xiaojiangshi unset name //删除变量 echo $name //空值
2.字符串
1)单引号
str='I am xiaojiangshi' //I am xiaojiangshi **注意:**单引号里的任何字符都会原样输出,单引号中不能出现单引号(转义后也不行)
2)双引号
str='xiaojiangshi' echo "hello,\"$str\"!" //hello,xiaojiangshi!
注意:双引号中可以有变量,又可以有转义字符
3)拼接字符串
name='xiaojiangshi' str1="hello,$name" //hello,xiaojiangshi age=18 str2="your name is $age" //your name is 18 echo ${str1} ${str2} //hello,xiaojiangshi your name is 18
4)获取字符串的长度
str="xiaojiangshi" echo ${#str} //输出12
5) 提取子字符串
str="xiaojiangshi" echo ${str:1:4} //输出iaoj
6)查找子字符串
str="xiaojiangshi" echo `expr index "$str" ao` //输出3
3.shell 数组
1)定义数组(用括号表示数组,数组元素用空格分隔)
arr=(1 2 9 10) echo ${arr[1]} //输出2
或者 arr(0)=1 arr(1)=2 arr(2)=9 arr(3)=10
2)读取数组
echo ${arr[1]} //输出2
输出所有元素:
echo ${arr[@]} //输出1 2 9 10
3)获取数组的长度
echo ${#arr[@]} //输出4
获得数组中单个元素的长度
echo ${#arr[1]} //输出1
4.位置参数
1)n,n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推
例如:定义一个test.sh
#!/bin/sh
echo ”0 ”
echo ” 1”echo”2 “
sh test.sh xiaojiangshi hadoop hdfs 输出:test.sh xiaojiangshi hadoop
2)$# 传递参数的个数
sh test.sh xiaojiangshi hadoop hdfs echo $# //输出3
3)$? 显示最后命令的退出状态,0表示没有错误,其他任何值表示有错误。
sh test.sh xiaojiangshi hadoop hdfs echo $? //输出0
4.echo 显示命令的执行结果
echo `date` //输出Wed Nov 1 15:39:45 CST 2017
5.流程控制语句
1)if
if [条件判断式];then
command;
fi
或者
if [条件判断式];then
command;
elif [条件判断式];then
command;
else
command
fi
2)for
格式:for var in values
do
command
done
下面已计算1到10的和为例
#!/bin/sh sum=0 for ((i=1;i<=10;i++)) do sum=`expr $sum + $i` done echo $sum //输出55
3)while
格式:while[condition]
do
command
done
以求1-10的和为例:
#!/bin/sh i=1 sum=0 while(($i<=10)) do sum=$(($sum+$i)) i=$i+1 done echo $sum //输出55
二.在Linux当中,自带的调度功能crontab
针对用户,每个用户都可以调度自己的任务例如:在小僵尸用户下创建定时任务
1)每分钟执行一次,并将文件写入到指定文件中
*/1 * * * * /bin/date >> /home/xiaojiangshi/web.log
2)列出所有的定时任务
crontab -l
3)删除所有的定时任务
crontab -r
4)crontab的基本定义
语法:* * * * * command
第一列:分钟,取值范围为1~59
第二列:小时,取值范围为0~23
第三列:日, 取值范围为1-31
第四列:月, 取值范围为1-12
第五列:星期,取值范围为0-6(其中0表示星期天)
注意:(假设前5个星分别对应c1-c5)
1.当c1为* 表示每分钟执行,当c2为*时表示每小时都要执行
例如:每分钟执行一次test.sh这个脚本
* * * * * sh test.sh
2.当c1为T1-T2时,表示从T1分钟到T2分钟这段时间内执行,以此类推 例如:每天20:00到23:00执行,每半小时执行一次 */30 20-23 * * * sh test.sh 3.当c1为a,b,c...表示第a,b,c...分钟要执行,以此类推 例如:每个月1,11,21 的2:30执行 30 2 1,11,21 * * sh test.sh 4.当c1为*/n时,表示每分钟执行一次,以此类推 例如:每一小时执行一次 * */1 * * * sh test.sh ***干货:*** 0表示键盘输入 1表示标准输出 2表示错误输出
00 06 * * * source /etc/profile && cd /home/xiaoju/autosql/a && sh Main.sh > main.log 2>&1 &
解析:>main.log 2>&1 &
首先,左边的表示是标准输入重定向到文件main.log, 2>&1将错误输出重定向到标准输出,&表示放到后台运行。
注意(配置定时任务时):
1.在SHELL中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到ORACLE的环境变量,这是因为crontab环境变量问题,Crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置。
2.尽量所有的文件都采用完全路径方式,避免使用相对路径。
相关文章推荐
- 大数据企业学习篇03_3------hive 高级
- Linux C 学习笔记01-基本数据类型
- 企业Linux服务器数据实时同步备份的解决方案 推荐
- 大数据企业学习篇06----Oozie详解
- 大数据笔记01:Linux入门与基础
- 大数据企业学习篇02_2------hadoop深入
- 大数据企业学习篇04-----Sqoop浅析
- 大数据01-云平台、虚拟机+Linux安装及命令操作
- 基于SAP数据管理产品组合,红帽推出面向HANA的企业Linux
- 大数据企业学习篇02_3-------hadoop高级
- 大数据企业学习篇03_2-----hive 深入
- 企业Linux服务器数据实时同步备份的解决方案
- 大数据企业学习篇03_1------hive 初识
- 大数据企业学习篇05----flume初识
- 企业Linux服务器数据实时同步备份的解决方案
- 企业Linux服务器数据实时同步备份的解决方案
- 大数据成推手 企业需要更多Linux人才
- Linux下Socket网络编程,文件传输,数据传输的C语言例子
- 01-linux基础优化与安全重点总结
- 20161011L04-03老男孩linux运维实战培训-Linux系统的用户和用户组管理-01