向脚本传递参数

简介: 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

相关文章
脚本中的几个函数
脚本中的几个函数
|
3月前
|
JavaScript 小程序 前端开发
生命周期函数和wxs脚本
这篇文章介绍了微信小程序的生命周期函数和wxs脚本,包括应用的生命周期函数、页面的生命周期函数,以及wxs与JavaScript的关系、wxs内嵌脚本和外联脚本的使用。
|
存储 缓存 小程序
小程序传参总结
在小程序开发中,页面跳转和数据传递是非常常见的需求。本文将介绍小程序中常用的传参方法,包括Query参数传递、全局变量传递和Storage传递,并对它们的使用场景和注意事项进行分析和总结。本文介绍了小程序中常用的传参方法,包括Query参数传递、全局变量传递和Storage传递等并对它们的使用场景和注意事项进行了分析和总结。在实际开发中,我们需要根据具体的需求和情况,不同的方式适用于不同的场景,灵活地选择传参方式,并结合一些优秀的状态管理工具,提高开发效率和用户体验,以上便是全部内容希望对各位同学有所帮助。
311 0
|
Shell Docker 容器
关于shell脚本传参出现“\r“的问题
关于shell脚本传参出现“\r“的问题
185 0
|
Shell
编写一个与变量相关的脚本
编写一个与变量相关的脚本
53 0
JSP学习(一):声明脚本、表达式脚本和代码脚本
虽然现在JSP用得不多了 ,但是很多学习JSP也就需要几天时间,而且很多项目仍然使用JSP,因此我也花几天时间学习一下JSP,要求自己能看懂代码就行。
150 0
SHEL脚本中调用另外一个脚本的函数和变量
SHEL脚本中调用另外一个脚本的函数和变量
103 0
|
Shell
SHELL中函数的写法、调用、参数、返回值代码范例
SHELL中函数的写法、调用、参数、返回值代码范例
126 0
|
Shell 计算机视觉
Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制(上)
Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制
213 0
Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制(上)
Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制(下)
Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制(下)
143 0
Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制(下)