相关疑难解决方法(0)

如何在Bash中解析命令行参数?

说,我有一个用这行调用的脚本:

./myscript -vfd ./foo/bar/someFile -o /fizz/someOtherFile
Run Code Online (Sandbox Code Playgroud)

或者这个:

./myscript -v -f -d -o /fizz/someOtherFile ./foo/bar/someFile 
Run Code Online (Sandbox Code Playgroud)

什么是分析这使得在每一种情况下(或两者的组合)的接受的方式$v,$f以及 $d将全部设置为true$outFile将等于/fizz/someOtherFile

bash scripting command-line arguments getopts

1764
推荐指数
24
解决办法
136万
查看次数

在Bash中,为什么在函数中使用getopts只能工作一次?

我正在尝试在macOS Sierra上创建一个简单的函数来计算字符串中的字符.这工作正常(添加到我的bashrc文件):

function cchar() {
    str=$1
    len=${#str}
    echo "string is $len char long"
}

$ cchar "foo"
string is 3 char long
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用一个-a选项扩展它,所以我将其添加到我的函数中(并将其余部分注释用于测试):

while getopts "a:" opt; do
    case $opt in
        a)
            echo "-a param: $OPTARG" >&2
            ;;
    esac
done
Run Code Online (Sandbox Code Playgroud)

在写这篇文章的一些测试之后,我注意到每次运行时cchar -a "test",我都必须运行它而没有选项(cchar)否则下次我使用该-a选项运行它时,它无法识别该选项.

$ cchar

$ cchar -a "foo"
-a param: foo

$ cchar -a "foo"

$ cchar

$ cchar -a "foo"
-a param: foo
Run Code Online (Sandbox Code Playgroud)

bash getopts

2
推荐指数
1
解决办法
497
查看次数

标签 统计

bash ×2

getopts ×2

arguments ×1

command-line ×1

scripting ×1