参数变量:用来向脚本中传递参数
我们在执行脚本的时候可以在其后面加入一些参数,通常来说这些参数与脚本中变量为对应关系。
start.sh argu1 argu2
引用方式:
$1,,2,……${10}${11},……
在脚本后边给两个文件路径分别对应文件中的$1,$2。并将值传递给$1,$2
轮替:
shift n:位置参数轮替。不给定个数时能默认为1.
脚本后给了三个参数,使用shift踢掉两个,所以脚本中最后引用$1实际值为3
特殊变量:
$0:脚本文件路径本身
$#:脚本参数的个数
$*:所有参数
$@:所有参数
特殊变量示例
代码执行顺序
顺序执行:从脚本第一行逐条执行至最后一行。
选择执行:
代码只有一个分支:条件满足是执行
代码有大于1个分级:只会执行满足条件的一个分支
循环执行:代码被执行N次
if:单分支、双分支、多分支
单分支if
if 测试条件;then
body
fi
双分支if
if 测试条件;then
测试条件为真执行的body
else
测试条件为假执行的body
fi
多分支if
if 测试条件1;then
测试条件1为真执行的body
elif 测试条件2;then
测试条件2位真执行的body
……
else
所有条件不满足是执行的body
fi
if示例
添加用户
比较大小
奇偶判断
判断文件类型
写一个脚本列出可执行的操作,并让用户输入选项,每个选项对应一种操作
用户类型判断
for:用来遍历列表和控制变量
列表生成方式:
直接给出列表
整数列表
{start..end}
seq [start [incremtal]] end
返回列表的命令 如ls /etc/* 结果也保存在列表中
等
示例
for VAR in LIST;do
循环体
done
for示例:
求1-100之和
练习题:
第二题
第一题
第三题
while:当循环
while CONDITION;do
循环体(包含循环控制变量修正表达式以退出循环)
done
until:直到循环
until CONDITION;do
循环体(包含循环控制变量修正表达式以退出循环)
done
while练习:打印九九乘法表
case:
case支持glob风格的通配符
*:任意长度的任意字符
?:任意单个字符
[]:范围内任意单个字符
a|b:a或b
case $VAR in
PAT1)
分支1
;;
PAT2)
分支2
;;
……
*)
以上所有条件均不满足是执行分支n
;;
esac
case示例