向脚本传递参数

简介: 1.使用$# $ pg opt.sh #!/bin/sh#opt.shusage(){    echo "usage:'basename $0' start|stop process name "}OPT=$1PROCESSID=$1if [ $# -ne 2 ]then    usage    exit 1ficase $OPT instart|Start) echo "Starting.

1.使用$#

$ pg opt.sh

#!/bin/sh
#opt.sh

usage()
{
    echo "usage:'basename $0' start|stop process name "
}
OPT=$1
PROCESSID=$1
if [ $# -ne 2 ]
then
    usage
    exit 1
fi
case $OPT in
start|Start) echo "Starting..$PROCESSID"
  ;;
stop|Stop) echo "Stopping...$PROCESSID"
  ;;
*) usage
  ;;
esac

$# 表示命令行的个数,执行时用

$ opt.sh start named

Starting..start

$ opt.sh start

usage:'basename /home/dongjichao/bin/opt.sh' start|stop process name

2.shift命令

shift可以从左至右的选择命令行参数,如

$ cat -n opt2.sh
     1    #!/bin/sh
     2    # opt2.sh
     3    loop=0
     4    while [ $# -ne 0 ]
     5    do
     6        echo $1
     7        shift
     8    done

$ history | tail -n 10
 1541  cat opt
 1542  cat opt.sh
 1543  opt.sh start named
 1544  opt.sh start
 1545  cat -n opt2.sh
 1546  history | tail 100
 1547  history | tail -n 100
 1548  opt2.sh file1 file2 file3
 1549  history | tail -n 30
 1550  history | tail -n 10
dongjichao@dongjichao:~/bin$ !1548
opt2.sh file1 file2 file3
file1
file2
file3

3.使用shift处理文件转换

$ cat opt3.sh
#!/bin/sh
#opt3.sh

usage()
{
    echo "usage:`basename $0` -[l|u] file [files] ">&2
    exit 1
}

if [ $# -eq 0 ]; then
    usage
fi

while [ $# -gt 0 ]
do
    case $1 in
        -u|-U) echo "-u option specified"
            shift
            ;;
        -l|-L) echo "-l option specifed"
            shift
            ;;
        *) usage
              ;;
    esac
done

运行

$ opt3.sh -u -l -k
-u option specified
-l option specifed
usage:opt3.sh -[l|u] file [files]

4.getopts

有时需要写类似  $ 命令 -l -c 23这样的命令,这时需要用到getopts

以下getopts脚本接受下列选项或参数

a  设置变量ALL为true

h  设置变量HELP为true

f  设置变量FILE为true

v  设置变量VERBOSE为true

$ cat getopt1.sh

#!/bin/sh
#getopt1

ALL=false
HELP=false
FILE=false
VERBOSE=false

while getopts ahfgv OPTION
do
    case $OPTION in
    a)ALL=true
      echo "ALL is $ALL"
      ;;
    h)HELP=true
      echo "HELP is $HELP"
      ;;
    f)FILE=true
      echo "FILE is $FILE"
      ;;
    v)VERBOSE=true
      echo "VERBOSE is $VERBOSE"
      ;;
    esac
done

运行上面的脚本

$ getopt1.sh -a -h  

ALL is true
HELP is true

相关文章
|
11月前
|
C#
脚本中的几个函数
脚本中的几个函数
|
1月前
|
机器学习/深度学习 Shell
Shell 传递参数
10月更文挑战第2天
10 0
|
12月前
|
Unix Shell
shell指定参数名传参
shell指定参数名传参
205 0
|
Shell
shell传递参数
shell传递参数
152 0
|
Shell Docker 容器
关于shell脚本传参出现“\r“的问题
关于shell脚本传参出现“\r“的问题
167 0
|
机器学习/深度学习 Shell
SHEL脚本中调用另外一个脚本的函数和变量
SHEL脚本中调用另外一个脚本的函数和变量
100 0
|
Shell
SHELL中函数的写法、调用、参数、返回值代码范例
SHELL中函数的写法、调用、参数、返回值代码范例
121 0
|
Java
【Groovy】Groovy 脚本调用 ( 命令行执行 Groovy 脚本并传入参数 | 获取 Groovy 脚本执行参数 )
【Groovy】Groovy 脚本调用 ( 命令行执行 Groovy 脚本并传入参数 | 获取 Groovy 脚本执行参数 )
1002 0
【Groovy】Groovy 脚本调用 ( 命令行执行 Groovy 脚本并传入参数 | 获取 Groovy 脚本执行参数 )
下一篇
无影云桌面