如何获取和比较Bash函数参数?

时间:2017-03-10 20:24:48

标签: python bash bash-function

这应该是一个简单的答案,但我还没有找到一个简单的解决方案。我试图创建一个运行reindent.py工具脚本的bash脚本,但我希望能够获得用户输入是否要将文件写回磁盘。基本上我想输入reindent_python -n FILE_PATHreindent_python FILE_PATH。到目前为止,我得到了以下内容:

function reindent_python () {
    if ["$1" = "n"]; then
        ./reindent.py -n $2
    else
        ./reindent.py $2
    fi
}

由于这是我的第一个shell脚本,我不知道如何判断第一个参数是否为-n且是$1 n参数和$2 FILE_PATH?我如何创建这个脚本?

谢谢!

2 个答案:

答案 0 :(得分:2)

首先,你展示的是一个功能,而不是一个脚本。您的功能可以简单如下:

function reindent_python () {
    ./reindent.py "$@"
}

鉴于您的Python脚本似乎采用与您的函数相同的参数。您可以使用上面的构造将它们全部传递给Python脚本。

正如@CharlesDuffy在评论中提到的那样,function关键字不是必需的:

reindent_python () {
    ./reindent.py "$@"
}

除此之外,if部分应为

[ "$1" = "-n" ];

括号周围有空格,n之前有短划线。

答案 1 :(得分:1)

您非常接近,只需添加-即可。字符串比较简单,没有其他处理,它不会为你删除连字符。

function reindent_python () {
    if [ "$1" = "-n" ]; then
        ./reindent.py -n "$2"
    else
        ./reindent.py "$2"
    fi
}

或在调用函数时将其删除:

reindent_python n FILE_PATH