将变量传递到BASH函数中时“找不到命令”,我引用不正确吗?

因此,我有一条命令,该命令基本上将行添加到文件中,但前提是该行中没有该行。它使用grep检查文件,如果没有,则附加到文件。

这样做的目的是因为我想将我的所有别名从可能多次执行的安装脚本中导入到BASH中(并且我不想用相同的重复行来填充〜/ .bashrc。别名)。

该命令本身可以很好地工作,但是当我尝试将其抽象为一个函数以在其他地方重用时,会出现错误:找不到命令。

到目前为止,我已经研究了grep和模式​​匹配(认为可能是&或〜正在扔掉它),参数扩展或命令扩展以及引用。

我觉得是后者,即我没有正确引用别名字符串或文件字符串,而是试图将其作为命令而不是字符串执行。

在这根头发上我已经拉了一段时间,请问有人能指出我正确的方向吗?

任何帮助表示赞赏!

# Command (which works)
grep -qxF 'alias gs="clear && git status"' ~/.bashrc || echo 'alias gs="clear && git status"' >> ~/.bashrc

# Wrap command in function so I can reuse and pass in different parameters
function append_unique_line {
    grep -qxF $1 $2 || echo $1 >> $2
}

# Doesn't work.. append_unique_line: command not found
append_unique_line 'alias gs="clear && git status"' ~/.bashrc
iCMS 回答:将变量传递到BASH函数中时“找不到命令”,我引用不正确吗?

尝试

function append_unique_line() {
    grep -qxF "$1" "$2" || echo "$1" >> "$2"
}

append_unique_line 'alias gs="clear && git status"' ~/.bashrc

始终将变量包装在"中以进行扩展。

本文链接:https://www.f2er.com/1923785.html

大家都在问