`
sdustyongz
  • 浏览: 84363 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux shell脚本全面学习3

阅读更多
2.case
  case :表达式可以用来匹配一个给定的字符串,而不是数字。
  case ... in
  ...) do something here ;;
  esac
  让我们看一个例子。 file命令可以辨别出一个给定文件的文件类型,比如:
  file lf.gz
  这将返回:
  lf.gz: gzip compressed data, deflated, original filename,
  last modified: Mon Aug 27 23:09:18 2001, os: Unix
  我们利用这一点写了一个叫做smartzip的脚本,该脚本可以自动解压bzip2, gzip 和zip 类型的压缩文件:
  #!/bin/sh
  ftype=`file "$1"`
  case "$ftype" in
  "$1: Zip archive"*)
  unzip "$1" ;;
  "$1: gzip compressed"*)
  gunzip "$1" ;;
  "$1: bzip2 compressed"*)
  bunzip2 "$1" ;;
  *) echo "File $1 can not be uncompressed with smartzip";;
  esac
  您可能注意到我们在这里使用了一个特殊的变量$1。该变量包含了传递给该程序的第一个参数值。
  也就是说,当我们运行:
  smartzip articles.zip
  $1 就是字符串 articles.zip
  3. selsect
  select 表达式是一种bash的扩展应用,尤其擅长于交互式使用。用户可以从一组不同的值中进行选择。
  select var in ... ; do
  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.
  关键字"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.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics