2014-09-22 72 views
0

我该如何做这项工作?我想为我的命令使用不同的函数,我的问题是如何将参数传递给add.sh函数? find.sh工作正常,但前两个命令表示没有参数-v/-a选项。我究竟做错了什么?不同功能的bash getopts选项

while getopts v:a:s opt 
do 
case "$opt" in 

v) ./view.sh;; 

a) ./add.sh;; 

s) ./find.sh;; 
+0

究竟是什么问题?你已经告诉'getopts','-v'和'-a'选项需要参数。你是否将参数传递给该脚本?如果你这样做,你不应该从'getopts'中得到一个错误。您似乎也在问如何将该参数(或其他参数?)传递给被调用的函数。这是两个非常不同的问题。第一部分是通过阅读'getopts'如何工作来回答的。第二个是在你组装完所有参数之前不运行脚本来回答的。 – 2014-09-22 01:38:47

+0

我试图将参数传递给-v和-a脚本,我不确定脚本是否正确接收参数,继承人view.sh的脚本 (awk -F“;”' {printf“记录:%d \ n \ t%s \ n \ t%s \ n \ t%s,%s,%s \ n \ t%s \ n =========== =============== \ n \ n“,NR,$ 1,$ 2,$ 3,$ 4,$ 5,$ 6}'$ BOOK; echo”按Q退出并返回菜单。“)| less – user3632739 2014-09-22 01:44:58

+0

我确实有一个脚本脚本,我可以运行所有脚本,但是我正努力应付getops。我有toplevel.sh脚本来运行所有其他脚本,现在我正在尝试为getops创建另一个脚本,我将其设置为,当没有提供参数时,getops脚本会自动打开顶层脚本。我仍然在努力学习它。感谢您的帮助先生 – user3632739 2014-09-22 01:46:58

回答

1

如果你想在-v选项传递到view.sh脚本,那么这样做:

while getopts v:a:s opt 
do 
    case "$opt" in 
    v) ./view.sh -v "$OPTARG";; 
    a) ./add.sh -a "$OPTARG";; 
    s) ./find.sh;; 
    esac 
done 

如果你想在“其他”参数传递给view.sh过,那么你必须工作有点困难。你可以简单地通过所有的参数./view.sh "[email protected]";;但选择性更难。