#cat test.sh #!/bin/sh echo '"$@" output.....' for i in "$@" do echo $i done echo '"$*" output ....' for i in "$*" do echo $i done 输出结果 #sh test.sh a b c d "$@" output..... a b c d "$*" output .... a b c d 字符串操作 例子 9-10. 在一个文本文件的段落之间插入空行 1 #!/bin/bash 2 # paragraph-space.sh 3 4 # 在一个单倍行距的文本文件中插入空行. 5 # Usage: $0 <FILENAME 6 7 MINLEN=45 # 可能需要修改这个值. 8 # 假定行的长度小于$MINLEN所指定的长度的时候 9 #+ 才认为此段结束. 10 11 while read line # 提供和输入文件一样多的行... 12 do 13 echo "$line" # 输入所读入的行本身. 14 15 len=${#line} 16 if [ "$len" -lt "$MINLEN" ] 17 then echo # 在短行(译者注: 也就是小于$MINLEN个字符的行)后面添加一个空行. 18 fi 19 done 20 21 exit 0 提取子串 1 stringZ=abcABC123ABCabc 2 # 0123456789..... 3 # 0-based indexing. 4 5 echo ${stringZ:0} # abcABC123ABCabc 6 echo ${stringZ:1} # bcABC123ABCabc 7 echo ${stringZ:7} # 23ABCabc 8 9 echo ${stringZ:7:3} # 23A 10 # 提取子串长度为3. 11 12 13 14 # 能不能从字符串的右边(也就是结尾)部分开始提取子串? 15 16 echo ${stringZ:-4} # abcABC123ABCabc 17 # 默认是提取整个字符串, 就象${parameter:-default}一样. 18 # 然而 . . . 19 20 echo ${stringZ:(-4)} # Cabc 21 echo ${stringZ: -4} # Cabc 22 # 这样, 它就可以工作了. 23 # 使用圆括号或者添加一个空格可以"转义"这个位置参数. 24 25 # 感谢, Dan Jacobson, 指出这点.