【问题标题】:bash getopts options for different functions用于不同功能的 bash getopts 选项
【发布时间】:2014-11-15 22:00:00
【问题描述】:

我怎样才能做到这一点?我想为我的命令使用不同的函数,我的问题是如何将参数传递给 add.sh 函数? find.sh 工作正常,但前两个命令说 -v / -a 选项没有参数。我做错了什么?

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

v) ./view.sh;;

a) ./add.sh;;

s) ./find.sh;;

【问题讨论】:

  • 这里的问题到底是什么?你告诉getopts -v-a 选项需要参数。您是否将参数传递给该脚本?如果你这样做了,你不应该收到来自getopts 的错误。您似乎也在问如何将该参数(或其他参数?)传递给被调用的函数。这是两个非常不同的问题。第一个部分是通过阅读getopts 的工作原理来回答的。第二个答案是在您组装完所有参数之前不运行脚本。
  • 我正在尝试将参数传递给 -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 "Press Q to Quit and返回菜单。" ) |少
  • 我确实有一个顶级脚本,我可以在其中运行所有脚本就好了,但我在 getops 上苦苦挣扎。我有 toplevel.sh 脚本来运行所有其他脚本,现在我正在尝试为 getops 制作另一个脚本,我将其设置为当没有提供参数时 getops 脚本会自动打开顶层脚本。我还在努力学习它。感谢先生的帮助
  • 如何调用您的顶级脚本?您希望从顶级脚本$BOOK 传递该view.sh 脚本的什么参数?调用带参数的脚本的方式与在 shell 中将参数传递给命令的方式相同,只需将它们放在命令行上即可。
  • 我还在尝试,先生,谢谢你的回答,我想表扬你,但不知道怎么做..

标签: bash getopts


【解决方案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 "$@";; 传递所有参数,但有选择性更难。

【讨论】:

    猜你喜欢
    • 2015-07-16
    • 2021-06-23
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 2012-08-14
    • 2021-04-29
    相关资源
    最近更新 更多