使用引号:如果想在一个参数中包含一个或多个空白符,就必须给参数加上引号。
$foo变量在引号中的行为取决于使用的引号类型。如果把一个带有$字符的变量放在双引号中,程序执行到这一行就会把变量替换成它的值;如果放在单引号中,就不会替换,还可以在$字符前面取消它的特殊含义。
把程序的内容保存后,要chmod +x filename 命令设置为可执行。
脚本检查文件是否存在:test -f <filename>
例如:
if test -f filename.c
then
...
fi
set-uid位是把程序拥有者的访问权限而不是用户的访问权限分配给程序,而set-gid位把程序所在组的访问权限分配给程序。这两个特殊位都是通过chmod命令的选项s和g设置的。set-gid和set-uid标志对shell脚本程序不起作用。
(1)判断:
echo "Is morning right now? Please answer yes or no."
read timeofday
if [ $timeofday = "yes" ]
then
echo "good morning"
elif [ $timeofday = "no" ]
then
echo "good afternoon"
else
echo "time of day was not recognized,please enter yes or no"
exit 1
fi
exit 0
以上测试中,如果两次测试的结果都不成功,就打印一条出错信息并以1为退出码来结束程序,调用者可以在调用程序中利用这个退出码来检查脚本是否执行成功。
为了避免空变量不是一个合法的输入,要给变量都加上引号。
如:if [ "$timeofday"="yes' ]
这样,用户直接按下enter也ok.
(2)循环:
使用for循环来处理一组值,语法:
for variable in values
do
statements
done
例如:
for foo in bar fud 43
do
echo $foo
done
exit 0
(3)while循环
while condition do
statements
done
例如:
echo "Please input the password"
read trythis
while [ "$trythis" != "secret" ]; do
echo "sorry, try again"
read trythis
done
exit 0
(4)until语句:
unitl condition
do
statements
done