阅读内容

Linux脚本编写入门基础知识

[日期:2007-06-08] 来源:Linux公社  作者:Linux


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" 以 << 开头,后面接上一个字符串,这个字符串
还必须出现在here document的末尾。下面是一个例子,在该例子中,我们对多个文件进行重命名,并且
使用here documents打印帮助:
#!/bin/sh
# we have less than 3 arguments. Print the help text:
if [ $# -lt 3 ] ; then
cat <
ren -- renames a number of files using sed regular expressions
USAGE: ren 'regexp' 'replacement' files...
EXAMPLE: rename all *.HTM files in *.html:
 ren 'HTM$' 'html' *.HTM
HELP
 exit 0
fi
OLD="$1"
NEW="$2"
# The shift command removes one argument from the list of
# command line arguments.
shift
shift
# $* contains now all the files:
for file in $*; do
  if [ -f "$file" ] ; then
   newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"`
   if [ -f "$newfile" ]; then
    echo "ERROR: $newfile exists already"
   else
    echo "renaming $file to $newfile ..."
    mv "$file" "$newfile"
   fi
  fi
done
 这是一个复杂一些的例子。让我们详细讨论一下。第一个if表达式判断输入命令行参数是
否小于3个 (特殊变量$# 表示包含参数的个数) 。如果输入参数小于3个,则将帮助文字传递
给cat命令,然后由cat命令将其打印在屏幕上。打印帮助文字后程序退出。如果输入参数等
于或大于3个,我们就将第一个参数赋值给变量OLD,第二个参数赋值给变量NEW。下一步,我
们使用shift命令将第一个和第二个参数从参数列表中删除,这样原来的第三个参数就成为参
数列表$*的第一个参数。然后我们开始循环,命令行参数列表被一个接一个地被赋值给变量$file。
接着我们判断该文件是否存在,如果存在则通过sed命令搜索和替换来产生新的文件名。然后
将反短斜线内命令结果赋值给newfile。这样我们就达到了我们的目的:得到了旧文件名和新
文件名。然后使用mv命令进行重命名。
上一页1234下一页  GO
【内容导航】
第1页:Linux脚本编写入门基础知识 第2页:Linux脚本编写入门基础知识
第3页:Linux脚本编写入门基础知识 第4页:Linux脚本编写入门基础知识



相关资讯       Linux脚本 
本文评论       全部评论
发表评论
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款


点评: 字数
姓名:

L
I
N
U
X


GOOGLE搜索
Google