shell脚本运用循环计算分段函数
测试和判断test命令(也可以使用[]代替test)可用来判断文件整数和字符串返回逻辑值
文件测试-e文件存在-d文件类型是否为目录-f文件类型为普通文件
整数比较-eq(equal)相等-ge(greater equal)大于等于-gt(greater than)大于-le(less equal)小于等于-lt(less than)小于更高级的test支持><=等符号的使用这时要用[[]]符号代表test的高级用法
字符串测试-n字符串长度是否非0-z是否为0=字符串判等!=字符串不等(详细用法见man test)
当测试结果为正确时返回0返回非0值表示不正确使用[]时里面的空格不能少
分支有if和case两种
if通用格式:包括了if-else if-elif-else if嵌套
if[$USER=root];then
if[$UID=0];then
echo"root 0"
elif[$UID=1];then
echo"root 1"
else
echo"root"
fielse
echo"not root"fi
case通用格式每一项结束使用;;不需要break使用*可匹配任意情况
case"$1"in
"start"|"START")
"
;;
"stop"|"STOP")
"
;;
*)
echo"Usages:$0{start|stop|reload|reload}"
;;esac
循环有for和while两种形式循环也支持break和continue
for形式的
for i in{1..9}do
mkdir$idone
shell还支持c语言风格的for但是shell并不擅长数值计算这里使用了双圆括号(())
for((i=1;i<8;i++))do
echo$idone
while就是满足条件一直执行
i=0while[$i-lt 8]do
echo"$i"
((i++))done
until正好和while相反不满足条件时一直执行
i=0until[$i-gt 8]doshell脚本返回执行结果
if[$i-eq 5];then
((i++))
continue
elif[$i-eq 7];then
break
else
echo"$i"
((i++))
fidone
函数function fname(){}function可以省略调用时直接使用fname不用加括号若有参数直接跟在后面就行了
可在函数里面使用local申请局部变量$#代表参数数量$*和$@代表所有位置参数shift参数左移$1$代表第1 2 3个参数
forkf(){f|f}f就是递归调用一直创建进程消耗内存。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。