(shell脚本学习第一集:基础)
一、$符号的用意
$1 获取传进来的第一个参数
$2 获取传进来的第二个参数
$3 获取传进来的第三个参数
$# 一共多少个参数被传进来
$? 前一个命令是否正确执行
$$ 获取本PID号
二、输出
1)echo xxx
2)printf xxx
三、双引号与单引号的区别
'xxx'去掉引号里面字符的特殊意义,比如\t是tab、\n是回车,在引号里面,单纯是斜杠+t,没有特殊意义
"xxx"单纯去掉空格,比如"a b c d",其实就是"abcd"
四、数值比较
-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于或等于
-le 小于或等于
-z 为空
-n 不为空
比如:
a大于b为【 $a -gt $b 】
五、判断
用[]来表示,并且里面的两端要空格,没有空格则是普通的文件名
比如:
[ $a = $b ]表示判断a与b是否相等
[ $a -gt$b ]表示判断是否a大于b
[$a -gt$b]表示普通字符串,因为两端没有空格
六、执行脚本
1)./build.sh,点为当前目录,build.sh为你要执行的脚本
2)/aa/bb/build.sh,表示执行aa目录里面的bb目录里面的build.sh脚本
七、文件判断
[ -e xxx ] 判断xxx是否已经存在
[ -f xxx ] 判断xxx是否是普通文件
[ -s xxx ] 判断xxx是否大小为零
[ -d xxx ] 判断xxx是否是一个目录
[ -r xxx ] 判断xxx是否对当前用户可读取
[ -u xxx ] 判断xxx是否对当前用户可写入
[ -x xxx ] 判断xxx是否是可执行文件
[ -g xxx ] 判断xxx的GID是否被设置
[ -u xxx ] 判断xxx的VID是否被设置
[ -O xxx ] 判断xxx是否属于当前用户
八、条件与判断
if语句:以if开始,以fi结束
if[ $a = bb ]
then echo hello
elif[ $a = cc ]
then echo hi
else
echo nonono
fi
switch语句:以case开始,以esac结束
case $a in
bb)
echo hello bb
;;
cc)
echo hello cc
;;
*)
echo helle other
esac
(后面那个*号就像是default一样)
for循环:
for $a in 12 13 14
do
echo $a
done
(把12、13、14当作一个集合,然后遍历整个集合,并输出)
九、调试
执行的时候,用以下两个语句来操作
1)bash -v ./build.sh这个是执行的时候,可以看见具体现在走到了哪一步
2)bash -vx ./build.sh这个是执行的时候,不单止可以看到现在走到了哪一步,而且每一步都会把变量替换,并展示给你看
今天就学习到这,内容难免有错漏,待以后review,期待下一集