避免将$ var解释为引号内的变量

时间:2017-12-12 09:05:56

标签: bash

我在很多方面尝试过,但却无法以正确的方式进行尝试。

fun="
mkcdo ()
{
    mkdir -p -- \"'$1'\" && cd -P -- \"'$1'\"
}"

echo "$fun" >> ~/.bashrc

我想要的是将其附加到.bashrc

mkcd ()
{
    mkdir -p -- "$1" && cd -P -- "$1"
}

可以这样做吗?在python:r'whatever\you\$write'中有没有像bash一样的方式,所以它被完全忽略为简单的文本?

2 个答案:

答案 0 :(得分:2)

使用变量存储bash功能代码听起来很反模式。对于多行格式化字符串,我建议使用here-doc并引用它们以避免扩展变量

cat >> ~/.bashrc << 'EOF'
mkcd () {
    mkdir -p -- "$1" && cd -P -- "$1"
}
EOF

进一步阅读 - Bash - Here documents

答案 1 :(得分:0)

Alternative1:只使用单引号。

fun='
mkcdo ()
{
    mkdir -p -- "$1" && cd -P -- "$1"
}'

echo "$fun" >> ~/.bashrc

备选方案2:转义$符号。

fun="
mkcdo ()
{
    mkdir -p -- \"\$1\" && cd -P -- \"\$1\"
}"

echo "$fun" >> ~/.bashrc