我是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美元?或者我们需要使用不同的变量来获得它?
由于
答案 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
希望有所帮助。