对置顶贴中的"shell基础"有点不明白

sh/bash/dash/ksh/zsh等Shell脚本
回复
yanglh
帖子: 111
注册时间: 2007-10-24 17:56
送出感谢: 0
接收感谢: 0

对置顶贴中的"shell基础"有点不明白

#1

帖子 yanglh » 2008-03-22 12:49

#!/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 [ $# -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
对这部分有些疑问. "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
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#2

帖子 BigSnake.NET » 2008-03-22 12:59

是有误, 应该是

代码: 全选

cat <<HELP
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 
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
yanglh
帖子: 111
注册时间: 2007-10-24 17:56
送出感谢: 0
接收感谢: 0

#3

帖子 yanglh » 2008-03-22 18:02

OK
谢谢BigSnake.NET
回复

回到 “Shell脚本”