linux的sh编—2
来源:百度文库 编辑:神马文学网 时间:2024/04/29 16:09:04
linux的sh编—2
下面是一个更为有用的脚本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. 引号 在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓扩展的意思是程序会把通配符(比如*)替换成合适的文件名,它变量替换成变量值。为了防止程序作这种替换,您可以使用引号:让我们来看一个例子,假设在当前目录下有一些文件,两个jpg文件, mail.jpg 和tux.jpg。 #!/bin/sh echo *.jpg 这将打印出"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 Here document. 当要将几行文字传递给一个命令时,here document.(译者注:目前还没有见到过对该词适合的翻译)一种不错的方法。对每个脚本写一段帮助性的文字是很有用的,此时如果我们四有那个 here document.就不必用echo函数一行行输出。一个 "Here document.quot; 以 << 开头,后面接上一个字符串,这个字符串还必须出现在here document.末尾。下面是一个例子,在该例子中,我们对多个文件进行重命名,并且使用here document.打印帮助: #!/bin/sh # we have less than 3 arguments. Print the help text: if [ $# -lt 3 ]then cat <#!/bin/sh
# vim: set sw=4 ts=4 et: help() { cat <
linux的sh编—2
对#!/bin/sh的认识
sh性的一组图片
用GCC将源文件编译成库文件的问题 Linux/Unix社区 / 程序开发区
用GCC将源文件编译成库文件的问题 Linux/Unix社区 / 程序开发区
Linux内核的文件预读2,Linux技术文章,Linux系列教程,Linux
用GCC将源文件编译成库文件的问题 Linux/Unix社区 / 程序开发区 - CSDN社区 community.csdn.net
谁编的——太有才了
中国结--蝴蝶结的编法2
不知谁编的,太有才了!2
中国结的编法—复翼盘长结
Linux版的杀毒软件——avast! Linux Home Edition
Linux程序设计基础——IDE的使用(2)
编库的过程
编公式的体会
这是谁编的
不知谁编的
钮扣的编织法
海豚的编织法
中国结 的编法
这是谁编的!
-蝴蝶结的编法
编的很经典
围巾的编织法