'command not found' 将变量传递给 BASH 函数时,我引用不正确吗?

'command not found' when passing variable into BASH function, am I quoting incorrectly?

所以我有一个命令,它基本上向文件添加一行,但前提是该行不在文件中。它使用 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   || echo  >> 
}

# Doesn't work.. append_unique_line: command not found
append_unique_line 'alias gs="clear && git status"' ~/.bashrc

尝试

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

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

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