0

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

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

由于这是我的第一个 shell 脚本,我不确定如何获取第一个参数是否为 -n 以及是否$1为 n 参数和$2FILE_PATH?我将如何创建这个脚本?

谢谢!

4

2 回答 2

2

首先,您显示的是函数,而不是脚本。您的功能可能很简单:

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

鉴于您的 Python 脚本似乎采用与您的函数相同的参数这一事实。您可以使用上述构造简单地将它们全部传递给 Python 脚本。

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

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

除此之外,这if部分应该是

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

括号周围有一个空格, . 之前有一个破折号n

于 2017-03-10T20:32:44.783 回答
1

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

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

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

reindent_python n FILE_PATH

于 2017-03-10T20:33:19.457 回答