如何将涉及变量的多行附加到 bash 脚本的末尾?

Jos*_*nto 2 shell-script bashrc printf

我想补充:

function ps_mem {
   python /home/vagrant/ps_mem/ps_mem.py -p $@
}
Run Code Online (Sandbox Code Playgroud)

~/.bashrc从命令行结束。我试过使用:

printf "function ps_mem {\n python /home/vagrant/ps_mem/ps_mem.py -p $@ \n}" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

虽然它几乎起作用了,但输入字段$@被忽略了,使得:

function ps_mem {
 python /home/vagrant/ps_mem/ps_mem.py -p
}
Run Code Online (Sandbox Code Playgroud)

而是添加到~/.bashrc.

cha*_*aos 5

对于此类工作,请使用此处的文档:

cat <<'EOF' >>~/.bashrc
function ps_mem {
   python /home/vagrant/ps_mem/ps_mem.py -p "$@"
}
EOF
Run Code Online (Sandbox Code Playgroud)

<<'EOF'引用时,shell 不会扩展 here 文档中的特殊字符。来自 POSIX Shell 命令语言

如果 word 中的任何字符被引用,[...] here-document 行不应扩展。