编写shell脚本的时候,最开始的第一行要加上: #!/bin/bash
这句话是告诉系统用bash这个解析器
一、shell变量
shell变量和一些编程语言不同,一般shell的变量赋值的时候不用带“$”
,而使用或者输出的时候要带“$”
。加减乘除的时候要加两层小括号。括号外面要有一个“$”
,括号里面的变量可以不用“$”
。需要注意的是,变量赋值,变量使用的时候不能有空格,否则会被解析成命令,报错无此命令。
例子:
#!/bin/bash
a=10
b=20
c="this is a test"
d=$((a+b))
e=$((a-b))
f=$((a*b))
g=$((a/b))
h=$((a%b))
i=$((a**3))
echo $c
echo "a = "$a #输出a的值
echo "b = "$b #输出b的值
echo "a+b = "${d} #输出a+b的值
echo "a-b = "${e} #输出a-b的值
echo "a*b = "${f} #输出a*b的值
echo "a/b = "${g} #输出a/b的值
echo "a%b = "${h} #输出a%b的值
echo "a^3 = "${i} #输出a的3次方的值
echo "a+b = "$((a+b)) #输出a+b的值
echo "a-b = "$((a-b)) #输出a-b的值
echo "a*b = "$((a*b)) #输出a*b的值
echo "a/b = "$((a/b)) #输出a/b的值
echo "a%b = "$((a%b)) #输出a%b的值
echo "a^3 = "$((a**3)) #输出a的3次方的值
echo $((a+b*a-b/a+a%b+a**2)) #表达式可以很长
二、字符串操作:
${#string} : 计算长度 ${string:position} : 从position开始截取 ${string:position:length} : 从position开始截取length长度 ${string#substring} : 删除开始的字符串
三、语句判断
(1)test命令
-f:文件是否存在 -d:目录是否存在 -r:文件是否有读权限 -w:文件是否有写权限 -x:文件是否有执行权限
例子:
#!/bin/bash filename=/home/zhangsan test -f $filename && echo 'exist' || 'not exist'
(2)条件分支
三种条件分支:单分支、双分支和多分支
语法:
单分支
if[];then echo 'aa' fi
双分支
#!/bin/bash if[];then echo 'aa' else echo 'bb' fi
多分支
#!/bin/bash if[];then echo 'aa' elif echo 'bb' elif echo 'cc' fi
case in方式
#!/bin/bash echo '输入一个值:' read number case $number in 1) echo '1';; 2) echo '2';; *) echo '错误';; esac
四、循环语句
(1)while do 循环
#!/bin/bash i=10 while [ $i -eq 5 ];do echo $i; ((i--)); done;
(2)until do 循环
#!/bin/bash i=10 until (($a<0));do echo $i; ((i--)); done;
(3)for循环
#!/bin/bash for((i=1;i<=10;i++));do echo $i done;
五、函数的定义
function function_name()
{ statement1
statement2
....
statementn
}
函数的调用
function_name parm1 parm2