一、运算符与表达式:
算术运算符:
+, - , *, /, % 加,减,乘,除,取余
算术表达式:
方式一:变量=$[运算式]
再 echo 变量
;或者$((运算式))
方式二:expr 3 - 2
注:expr运算符两侧要有空格;且乘法为\*
。
注:一般会选择方式一 $[运算式]
A=$[1+2]
echo A
条件运算符:
1 两个整数之间比较 = 字符串比较:
-lt 小于(less than) -le 小于等于(less equal)
-eq 等于(equal) -gt 大于(greater than)
-ge 大于等于(greater equal) -ne 不等于(Not equal)
2 按照文件权限进行判断:
-r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute)
3 按照文件类型进行判断:
-e 文件存在(existence)
-f 文件存在并且是一个常规的文件(file)
-d 文件存在并是一个目录(directory)
条件表达式:
[ condition ]
注:condition前后要有空格,且条件非空为true,空为false。
用于条件语句、循环语句。
[ 1 -gt 2 ] #执行失败
echo $? #查询上一条语句的执行状态,执行成功返回0,执行失败返回失败码
逻辑运算符:
&& || 和java中的含义相同
二、流程控制:
if
基本语法:
if [ 条件判断式 ]
then
程序
elif [ 条件表达式 ]
then
程序
else
程序
fi
注:if后要有空格,condition前后要有空格。
例子:输入参数$1为1输出hello,为2输出bye。
!/bin/bash
if [ $1 -eq "1" ]
then
echo "hello"
elif [ $1 -eq "2" ]
then
echo "bye"
fi
执行:执行:
sh case1.sh 1``
case
基本语法:
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注:;;相当于break; ,*表示其它值相当于default。
case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
例子:输入参数$1为1输出hello,为2输出bye,为其他值输出"i don’t know"。
case $1 in
"1")
echo "hello"
;;
"2")
echo "bye"
;;
*)
echo "i don't know"
;;
esac
执行:sh case2.sh 1
普通for
基本语法:
for ((初始值;循环控制条件;变量变化))
do
程序
done
例子:从1加到100
#!/bin/bash
s=0
for(( i=1;i<=100;i++ ))
do
s=$[$s+$i]
done
echo $s
增强for
基本语法:
for 变量 in 值1 值2 值3…
do
程序
done
例子:打印所有输入参数
for i in "$@"
do
echo $i
done
注:
$ * 和 $ @都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$ 1 $ 2 … $n的形式输出所有参数,每次输出换行。
当它们被双引号“”包含时,“ $* ”会将所有的参数作为一个整体,以“$1 $2 … $n”的形式输出所有参数;“ $@”会将各个参数分开,以“$1” “$2”… ” $n”的形式输出所有参数。
while
基本语法:
while [ 条件判断式 ]
do
程序
done
注:while 和 [ 条件表达式 ]之间有空格,条件判断式与中括号之间也有空格。
例子:从1加到100
s2=0
j=1
while [ $j -le 100 ]
do
s2=$[$s2+$j]
j=$[$j+1]
done
echo $s2
注:vim比vi编辑器可读性好。