shell 编程
定义变量 `x=664` 在变量名.等号和值之间不能有空格 输出指令 `echo` echo $x 引号的区别 "" '' ""会将空格和分割都不转意,''会将值原样赋值 export 将变量升为全局变量 $()或`` 可以获取命令的返回值 $? 表示上一个命令退出的状态 $$ 表示当前进程编号 $0 表示当前脚本名称 $n 表示n位置的输入参数(n代表数字,n>=1) $# 表示参数的个数,常用于循环 $*和$@ 都表示参数列表 expr m + n 计算整数计算 $(((2+3)*4)) (2+3)*4计算
- 循环for
for n in 列表
do
echo $n
done或
for ((i = 0; i <= 5; i++))
do
echo "welcome $i times"
done
- 循环while
while expression
do
command
…
done
i=1
while ((i<=3))
do
echo $i
let i++
done
- case
case $1 in
start)
echo "starting"
;;
stop)
echo "stoping"
;;
*)
echo "Usage: {start|stop} “ esac
- if 判断
if [ 条件 ]
then
echo
elif [ 条件 ]
echo
else
echo
fi
例子
#!/bin/bash
read -p "please input your name:" NAME
#printf '%s\n' $NAME
if [ $NAME = root ]
then
echo "hello ${NAME},welcome !"
elif [ $NAME = wang ]
then
echo "hello ${NAME},welcome !"
else
echo "get out here !"
fi
条件:非空返回true,可使用$?验证(0为true,>1为false)
[ condition ] && echo OK || echo notok
条件满足,执行后面的语句
常用判断条件
- = 字符串比较
- -lt 小于
- -le 小于等于
- -eq 等于
- -gt 大于
- -ge 大于等于
- -ne 不等于
权限 - -r 有读的权限
- -w 有写的权限
- -x 有执行的权限
- -f 文件存在并且是一个常规的文件
- -s 文件存在且不为空
- -d 文件存在并是一个目录
- -b文件存在并且是一个块设备
- -L 文件存在并且是一个链接
shell 自定义函数
格式:
function name()
{
echo ” “;
return []
}
例子:
#!/bin/bash
s1=$1;
s2=$2;
function sum()
{
sum=$(($1+$2));
echo $((s1+s2));
return $sum;
}
sum 3 4;
total=$?;
echo $total,$?;
注:$?返回上个语句的返回值
sh -vx fun.sh 可以看到执行的过程,但是不停
如图: