我是unix脚本的新手。我正在尝试创建一个充当unix命令的脚本,例如“ ls -l”,“ ls -la”
myscript -x ---->做事情1 myscript -xy ---->做1,做2 myscript -yz ---->做第二件事,做第三件事
因此,“-x”,“-xy”为$ 0?还是我们需要使用不同的变量来做到这一点?
谢谢
在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和error。
我说“类似”是因为此脚本可以理解“ myscript -x -y -z”,但将“ myscripts -xyz”检测为错误。
要实现像您这样的更复杂的行为,您需要使用GETOPT,如此处所述:http ://wiki.bash-hackers.org/howto/getopts_tutorial
希望能有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句