同时使用getopts时如何在Linux shell脚本中获取程序参数?

GOKOP:

因此,我有一个脚本,可以用来处理选项,getopts但我也想以通常的方式读取程序本身的参数。因此,在此示例脚本中,我想处理选项,然后echo处理参数,例如./script.sh -abc theargument出现的问题是我不知道它是哪个shell参数。参数不应该与选项相关,因此您也可以像这样调用脚本./script.sh theargument

#!/bin/sh

while getopts "abc" opt; do
    case $opt in
        a) echo "option a" ;;
        b) echo "option b" ;;
        c) echo "option c" ;;
    esac
done

echo # what?

我不能只shift带参数$OPTIND,使其$1因为选项可以给出像-abc-a -b -c-ab -c等等,这样的期权数量不对应的参数的个数。

理想情况下,我想避免bashisms

肖恩:

bash方法是使用间接${!VARIABLE}-什么VARIABLE扩展到被当作参数使用,所以echo "${!OPTIND}"后while循环在你的例子显示theargument

更通用的方法是先shift丢弃选项参数,然后再使用$1etc。

if [ "$OPTIND" -gt 1 ]; then
    shift $((OPTIND - 1))
fi

在您的示例$OPTIND中,循环后为2,因此这会将位置参数向左移动1,丢弃-abc并留theargument在中$1如果使用-abc theargument,,等等-ab -c theargument则此方法有效-a -b -c theargument

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bash脚本-如何在使用getopts时逐行读取文件

如何在 shell 脚本的 AWK 命令中获取动态 NR 参数

如何使用java将getopts参数传递给shell脚本

如何使用getopts正确解析shell脚本标志和参数

如何在 bash 脚本中使用 getopts?

如何在shell脚本中获取最后一个参数并在最后一个参数之前停止?

Linux Shell脚本-如何获取参数$ n的上层目录

在shell脚本中传递参数时更改

如何从.sh shell脚本中读取参数

如何从 shell 脚本中的 Bluemix Cloudfoundry 应用程序获取“application_uris”?

如何在bash中结合使用getopts和position参数?

如何从(PHP)Shell脚本中获取数据

如何从bash shell脚本中获取PID

在Linux Shell中同时过滤输出并获取程序的退出代码

如何在Shell脚本中获取Java应用程序的退出状态,标准输出和标准错误流?

如何在Shell脚本中检查系统参数?

如何在接收参数的Shell脚本中创建函数?

如何在接收参数的Shell脚本中创建函数?

如何在Shell脚本中以任何顺序接受参数

如何在shell脚本中拆分带引号的参数

在C Shell中执行脚本时获取脚本路径

如何在Shell脚本中获取JSON中向量的大小?

如何在Shell脚本中获取目录中的文件列表?

如何从UNIX Shell脚本获取Java程序完成状态?

如何在shell脚本中执行python程序

如何在Shell脚本中编写程序

如何在Shell脚本中执行python3程序

如何在shell脚本中获取python版本?

如何在Shell脚本中获取psql表记录?