首页 > 代码库 > shell 小脚本

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 done10 11 12 while [[ $1 = -* ]]; do    #匹配-后带任意值13   case $1 in14     -d) DEBUG=1 ;;15   esac16   shift17 done18 ACTION=$119 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 ; fi17 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 ; do25         case "$1" in26                 -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 optional31                         # argument is not found.32                         case "$2" in33                                 "") 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         esac39 done40 echo "Remaining arguments:"41 for arg do42    echo --> ‘"\`$arg‘" ;43 done

 

 

shell 小脚本