bash eval" echo' string' >>文件"带字面引号的声明

时间:2013-12-26 18:58:21

标签: bash shell eval quotes

我是shell脚本的新手。我已经开始大量使用终端用于SASS和git,并且想要一个简单的脚本来简化创建快捷方式。

function ma {
    cmd="echo alias $1='$2' >> ~/.bash_profile";
    cmd=${cmd/'$pwd'/$(pwd)};
    eval $cmd;
    echo $cmd;
}

问题是单引号不会写入.bash_profile。

在示例ma mycd '$pwd'中,echo'd版本是正确的:

echo alias mycd='cd /current/working/directory' >> ~/.bash_profile

但是会写入文件:

alias mycd=cd /current/working/directory

我尝试了50种这样的排列,尝试在字符串或eval语句中获得单引号和双引号以及转义引号的正确组合。如何让eval保留这些单引号,或者我应该使用什么呢?谢谢!

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

 cmd="echo \"alias $1='$2'\" >> ~/.bash_profile";