三、select/in 【用的相对来说比较少】
格式: select 变量 in 关键字
do
command 1
... ...
command n
done
select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令。
【示例】
#!/bin/bash
# A test for select
echo "What's your favorite OS?"
echo
select name in "UNIX" "Linux" "Windows" "Others"
do
break
done
echo "Your select is $name"
四、case/esac
格式: case 变量 in
字符串1)
命令列表1
;;
...
字符串n)
命令列表n
;;
esac
五、while
格式: while 条件
do
命令
done
【无限:whill true】
【示例】
#! /bin/sh
num=1
while [ $num -le 10 ]
do
SUM=`expr $num \* $num`
echo $SUM
num=`expr $num + 1`
done
六、untill
格式: until 条件
do
命令
done
until类似while循环,不同的是until是条件返回值为假时才继续执行。
【示例】
#!/bin/bash
# A test for until
until [ -x /etc/inittab ]
do
ls -l /etc/inittab
exit 0
done
七、跳出循环:break和continue
break:跳出整个循环
continue:跳过本次循环,进行下次循环
八、shift
参数左移,每执行一次,参数序列顺次左移一个位置,$#的值减1, 用于分别处理每个参数,移出去的参数不再可用
【示例】
#! /bin/sh
if [ $# -le 0 ]
then
echo "Not enough parameters"
exit 0
fi
sum=0
while [ $# -gt 0 ]
do
sum=`expr $sum + $1`
shift
done
echo $sum
函数应用
一、函数的定义:
函数名 ()
{
命令序列
}
二、函数的调用:不带()
函数名 参数1 参数2 ...
三、函数中的变量:
变量均为全局变量,没有局部变量
四、函数中的参数:
调用函数时,可以传递参数,在函 数中用$1、$2...来引用
Shell 脚本调试
sh -x script 这将执行该脚本并显示所有变量的值。
sh -n script 不执行脚本只是检查语法的模式,将返回 所有语法错误。
【命令最好使用绝对路径!】
【不用交互方式添加用户】
useradd mery
echo 123456 | passwd --stdin mery
【执行脚本所需要的权限】
1、该脚本拥有r权限 【不给x权限可以用sh执行】
2、对脚本所在目录有rx权限