Linux脚本编写教程(一) 基本语法
|
break done … now $var can be used … 下面是一个例子: #!/bin/sh echo "What is your favourite OS " select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do break done echo "You have selected $var" 下面是该脚本运行的结果: What is your favourite OS 1) Linux 2) Gnu Hurd 3) Free BSD 4) Other # 1 You have selected Linux 4.loop loop表达式: while …; do … done while-loop 将运行直到表达式测试为真。will run while the expression that we test for is true. 本文URL:http://www.bianceng.cn/OS/Linux/201410/45611.htm 关键字"break" 用来跳出循环。而关键字”continue”用来不执行余下的部分而直接跳到下一个循环。 for-loop表达式查看一个字符串列表 (字符串用空格分隔) 然后将其赋给一个变量: for var in …; do … done 在下面的例子中,将分别打印ABC到屏幕上: #!/bin/sh for var in A B C ; do echo "var is $var" done 下面是一个更为有用的脚本showrpm,其功能是打印一些RPM包的统计信息: #!/bin/sh # list a content summary of a number of RPM packages # USAGE: showrpm rpmfile1 rpmfile2 … # EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm for rpmpackage in $*; do if [ -r "$rpmpackage" ];then echo "=============== $rpmpackage ==============" rpm -qi -p $rpmpackage else echo "ERROR: cannot read file $rpmpackage" fi done 这里出现了第二个特殊的变量$*,该变量包含了所有输入的命令行参数值。 如果您运行showrpm openssh.rpm w3m.rpm webgrep.rpm 此时 $* 包含了 3 个字符串,即openssh.rpm, w3m.rpm and webgrep.rpm. 5. 引号 在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓扩展的意思是程序会把通配符 (比如*)替换成合适的文件名,它变量替换成变量值。为了防 止程序作这种替换,您可以使用 引号:让我们来看一个例子,假设在当前目录下有一些文件,两个jpg文件, mail.jpg 和tux.jpg。 1.2 编译SHELL脚本 #ch#!/bin/sh mod +x filename cho *.jpg ∪缓螅 梢酝ü 淙耄 ./filename 来执行您的脚本。 这将打印出"mail.jpg tux.jpg"的结果。 引号 (单引号和双引号) 将防止这种通配符扩展: #!/bin/sh echo "*.jpg" echo '*.jpg' 这将打印"*.jpg" 两次。 单引号更严格一些。它可以防止任何变量扩展。双引号可以防止通配符扩展但允许变量扩展。 #!/bin/sh echo $SHELL echo "$SHELL" echo '$SHELL' 运行结果为: /bin/bash /bin/bash $SHELL 最后,还有一种防止这种扩展的方法,那就是使用转义字符——反斜杆: echo *.jpg echo $SHELL 这将输出: *.jpg $SHELL 6. Here documents 当要将几行文字传递给一个命令时,here documents(译者注:目前还没有见到过对该词适合的翻译) 一种不错的方法。对每个脚本写一段帮助性的文字是很有用的,此时如果我们四有那个 here documents 就不必用echo函数一行行输出。 一个 "Here document" 以 shift by 2 --) shift;break;; # end of options -*) echo "error: no such option $1. -h for help";exit 1;; *) break;; esac done echo "opt_f is $opt_f" echo "opt_l is $opt_l" echo "first arg is $1" echo "2nd arg is $2" 您可以这样运行该脚本: cmdparser -l hello -f -- -somefile1 somefile2 返回的结果是: opt_f is 1 opt_l is hello first arg is -somefile1 2nd arg is somefile2 这个脚本是如何工作的呢?脚本首先在所有输入命令行参数中进行循环,将输入参数 与case表达式进行比较,如果匹配则设置一个变量并且移除该参数。根据unix系统的惯例, 首先输入的应该是包含减号的参数。 (编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

