如何获得unix脚本参数?

时间:2014-09-02 13:59:17

标签: bash shell unix sh

我是unix脚本的新手。我正在尝试创建一个充当unix命令的脚本,例如“ls -l”,“ls -la”


myscript -x     ----> do thing 1
myscript -xy    ----> do thing 1, do thing 2
myscript -yz    ----> do thing 2, do thing 3

所以,“-x”,“ - xy”是0美元?或者我们需要使用不同的变量来获得它?

由于

1 个答案:

答案 0 :(得分:4)

在Bash中,参数以索引1开头,而$ 0保留给命令本身。这也适用于函数和命令。

这就是你如何实现类似于你所要求的东西:

while [ "$1" != "" ] ; do
  case "$1" in
    -x)
       do_thing_1
       ;;
    -y)
       do_thing_2
       ;;
    -z)
       do_thing_3
       ;;
    *)
       error $1
       exit -1
       ;;
  esac
  shift
done

您需要声明函数do_thing_xxx和错误。

我说过类似的东西"因为这个脚本会理解" myscript -x -y -z"但检测到" myscripts -xyz"错了。

要实现更复杂的行为,就像您的行为一样,您需要使用GETOPT,如下所述:http://wiki.bash-hackers.org/howto/getopts_tutorial

希望有所帮助。