文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>bash笔记-03-流程控制

bash笔记-03-流程控制

时间:2006-07-15  来源:zzzppp

条件执行
shell脚本能够测试任何命令的返回值, 不管它是直接从命令行中被调用的还是在脚本中被调用的(所以你最好在脚本的末尾加上exit语句).

一般地, bash中使用"test"和"["来判断命令的返回值. 如果是要检验命令的返回值, 检测返回值的方法和c中类似.
$ if ! grep $USER /etc/passwd
$ grep $USER /etc/passwd; if [ $? -ne 0 ];
test和[是等价的, 唯一的区别是调用[时候会在命令末尾加一个]以增加可读性.
实际上man中关于test和[显示的是同样的内容.
它们的使用方法如下:
$ if test -f file
> then
> ls -l file
> fi

若使用[, 第一句改为:  $ if [ -f file ]
注意: [与file之间要留有空格, 想象[和test等价就知道原因了.

test, [ 测试它之后的语句, 若为真, 则执行then到fi之间的语句. 测试的类容分为3类: 字符串比较, 算术比较, 文件类型. 具体可参考 $ man [

被比较的变量要用""引用起来! 看看下面的脚本:
#!/bin/bash
echo "please input 'yes' or 'no'"
read answer
if [ $answer = "yes" ]; then
echo "yes"
else
echo "no"
fi
如果我直接输入回车, 那么" if [ $answer = "yes" ]; then "语句会等价于 " if [  = "yes" ]; then ". 这是个无效的比较. 所以应该用""把$answer引用起来, 这样, 即便输入回车, 也是这样的比较: " if [  "" = "yes" ]; then "

联想C语言里的条件执行: if (condition) , 对比bash中的if [condition], 可以把[]想象成C语言if之后的().

控制结构
if-elif-else
if condition
then
statements
elif
statements
else
statements
fi

要执行的语句跟在then之后, if语句以fi结尾.

for
for name [in list]
do
statements
done

如果不注明[ in list], 则默认为&@

要执行的语句跟在do之后, for语句以done结尾.

Since all shell values are considered strings by default, the for loop is good for looping through a series of strings, but is a little awkward to use for executing commands a fixed number of times.

while
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载