大数据之Shell编程(二) Shell的基本语法
1.运算符
- 格式: expr m + n 或 $((m+n)) 注意:运算符之间需要含有空格,否则报错
# 计算(2+3)*4的值
# 方式一:分步计算
>>> S=`expr 2 + 3`
>>> expr $S \* 4
# 方式二:一步完成计算
>>> expr `expr 2 + 3` \* 4
# 或者
>>> $(((2+3)*4))
2.for循环
- 方式一
for N in 1 2 3
do
echo $N
done
或
for N in 1 2 3;do echo $N;done
或
for N in {1..3};do echo $N;done
- 方式二
for((i=0;i<=5;i++))
do
echo "welcome $i times"
done
3.while循环
while expression
do
command
done
例如:
#!/bin/bash
while [ 2 -gt 1 ]
do
echo aa
done
i=1
while ((i<=3))
do
echo $i
let i++
done
4.case语句
case $i in
start)
echo "starting"
;;
stop)
echo "stoping"
;;
*)
echo "Usage:{start|stop}"
esac
5.read命令,等待用户输入
- read -p (提示语) -n (字符个数) -t (等待时间)
>>> read -p "please input your name:" NAME
>>> echo $NAME
6.if判断
# 语法
if condition
then
statements
[elif condition
then
statements...]
[else
statements...]
fi
例如:
#!/bin/bash
read -p "please input your name:" NAME
if [ $NAME = root ]
then
echo "hello ${NAME},welcome!"
elif [ $NAME = su ]
then
echo "hello ${NAME},welcome!"
else
echo "SB,get out here!"
fi
7.判断语句
- [ condition ] 注意:condition前后一定要有空格
非空返回true,可以使用$?来验证(0 为true >=1 为false)
>>> [ hello ]
>>> echo $?
>>> 0
>>> [ ]
>>> echo $?
>>> 1
[ condition ] && echo OK || echo NotOk
表示满足条件输出OK 否则返回 NotOk
常用的判断条件
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
判断文件的:
-r 是否有读的权限
-w 是否有写的权限
-x 是否可执行权限
-f 文件是否存在并且是一个常规的文件
-s 文件存在且不为空
-d 文件存在并且是一个目录
-b 文件存在并且是一块设备
-L 文件存在并且是一个链接
>>> [ -f iftest.txt ]
>>> echo $?
>>> 0
8.自定义函数
#语法
[function] funcname [()]
{
action;
[reurn int;]
}
# 例如: function start() / start() / function start
# 并且返回值只能为int 0~255
# 方法参数可以使用$1 $2...
#!/bin/bash
fSum 3 2;
function fSum()
{
echo $1,$2;
return $(($1+$2));
}
total=$?;
echo "第一次获取的结果:" $total
fSum 5 7;
total=$?;
echo "第二次获取的结果:" $total
注意:1 必须在调用之前定义函数,shell是逐行执行
2.函数的返回值只能通过$?来获取,函数可以显示的添加return返回,如果不添加将以最后一条命令运行结果,作为返回值。return的值必须为int 范围为0~255
9.脚本调试
- sh -xv helloworld.sh
- 或者在脚本中增加set -x