我是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
保留这些单引号,或者我应该使用什么呢?谢谢!
答案 0 :(得分:2)
尝试以下方法:
cmd="echo \"alias $1='$2'\" >> ~/.bash_profile";