shell 小脚本

 1 #! /bin/bash
 2 
 3 j=0
 4 for i in "$@"
 5 do
 6 j=$(( $j + 1))    #累加计算
 7     echo -e "$j  \c"
 8 echo $i
 9 done
10 
11 
12 while [[ $1 = -* ]]; do    #匹配-后带任意值
13   case $1 in
14     -d) DEBUG=1 ;;
15   esac
16   shift
17 done
18 ACTION=$1
19 shift    

$@ : 参数本身的列表,不包括命令本身
$*   : 和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组

 

摘抄一个: https://blog.linuxeye.com/389.html

 1 !/bin/bash
 2 
 3 #-o表示短选项,两个冒号表示该选项有一个可选参数,可选参数必须紧贴选项
 4 #如-carg 而不能是-c arg
 5 #--long表示长选项
 6 #"$@"在上面解释过
 7 # -n:出错时的信息
 8 # -- :举一个例子比较好理解:
 9 #我们要创建一个名字为 "-f"的目录你会怎么办?
10 # mkdir -f #不成功,因为-f会被mkdir当作选项来解析,这时就可以使用
11 # mkdir -- -f 这样-f就不会被作为选项。
12 
13 TEMP=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
14      -n 'example.bash' -- "$@"`
15 
16 if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
17 
18 # Note the quotes around `$TEMP': they are essential!
19 #set 会重新排列参数的顺序,也就是改变$1,$2...$n的值,这些值在getopt中重新排列过了
20 eval set -- "$TEMP"
21 
22 #经过getopt的处理,下面处理具体选项。
23 
24 while true ; do
25         case "$1" in
26                 -a|--a-long) echo "Option a" ; shift ;;
27                 -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
28                 -c|--c-long)
29                         # c has an optional argument. As we are in quoted mode,
30                         # an empty parameter will be generated if its optional
31                         # argument is not found.
32                         case "$2" in
33                                 "") echo "Option c, no argument"; shift 2 ;;
34                                 *)  echo "Option c, argument \`$2'" ; shift 2 ;;
35                         esac ;;
36                 --) shift ; break ;;
37                 *) echo "Internal error!" ; exit 1 ;;
38         esac
39 done
40 echo "Remaining arguments:"
41 for arg do
42    echo '--> '"\`$arg'" ;
43 done

 

 
posted @ 2016-09-26 15:21  navas  阅读(109)  评论(0编辑  收藏  举报