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

How to get and compare Bash Function parameters?

这应该是一个简单的答案,但我一直未能找到简单的解决方案。我正在尝试创建一个运行 reindent.py 工具脚本的 bash 脚本,但我希望能够让用户输入他是否想将文件写回磁盘。基本上我想输入 reindent_python -n FILE_PATHreindent_python FILE_PATH。到目前为止,我得到了以下信息:

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

因为这是我的第一个 shell 脚本,所以我不确定如何获取第一个参数是否为 -n 并且 </code> n 参数和 <code> the FILE_PATH?我将如何创建此脚本?

谢谢!

首先,你显示的是函数,不是脚本。您的函数可以像这样简单:

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

考虑到您的 Python 脚本似乎采用与您的函数相同的参数。您可以使用上述结构将它们全部传递给 Python 脚本。

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

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

除此之外,if 部分应该是

[ "" = "-n" ];

括号内有 space,n 前有破折号。

你很接近,只需添加 -。字符串比较很简单,不做任何其他处理,它不会为您删除连字符。

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

或者调用函数时去掉:

reindent_python n FILE_PATH