if elseif else 判断
mytar.sh
#!/bin/sh
#操作命令后都要添加空格,对 [] 中添加conditions 也要添加空格
#!/bin/sh
if [ -z "${1}" ]; then
echo "no file"
elif [ "${1##*.}" = "tar" ]; then
echo "this is a tar file"
elif [ "${1##*.}" = "gz" ]; then
echo "this is not a gz file"
else
echo "other file"
fi
//执行
./mytar.sh a.tar
myvar="3"
if [ "$myvar" != "3" ] //用$输出要定义的变量 ${myvar} 字符比较须加上"" 因为$myvar 输出为 3
then
echo "$myvar"
else
echo "3"
fi
for 循环
for
do
……
done
while 循环
while [ condition ]
do
……
done
until 循环
until [ condition ]
do
……
done
for x in one two three four
do
echo $x
done //输出结果 one two three four 每一次循环 执行一次循环体 do …… done
//得到以a开头的文件 并判断其是否可写 如不可写就输出其权限 在echo 输出变量时 是使用命令 要将命令放于 $()中
for file in $(ls |grep ^a)
do
if [ -w "$file" ]
then
echo "$file can w"
else
echo "$(ls -ld $file)"
fi
done
shell的算术计算 $(()) 别忘了是两个() 内层是计算 外层是$的输出
echo $((8*8))
read num //读入数值
12
while [ $num != 9 ] //如果读入数值不为 9 循环做计算
do
echo "$num"
num=$(($num-1))
done
read num
12
until [ $num = 9 ] //此处与while 相反 只要为真就会退出
do
echo "$num"
num=$(($num-1))
done
case 判断结构体
read num
3
case "$num" in
1)
echo "1"
;; //;; 如果==1 则执行 从)到;;的代码段
2)
echo "2"
;;
*)
echo "3"
;;
esac
函数 与 名称空间
//定义一方法体
readNum(){
case "$num" in
1)
echo "1"
;;
2)
echo "2"
;;
*)
echo "3"
;;
esac
}
num=1
readNum
//执行输出 1