【发布时间】:2013-12-26 18:58:21
【问题描述】:
我是 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 alias mycd='cd /current/working/directory' >> ~/.bash_profile
但这是写入文件的:
alias mycd=cd /current/working/directory
我已经尝试了大约 50 种排列方式,试图在字符串或 eval 语句中获得单引号和双引号以及转义引号的正确组合。我怎样才能让eval 保留那些单引号,或者我应该使用什么来代替?谢谢!
【问题讨论】:
-
因为我觉得这很有用,我想我会分享我的更新版本,它会重新加载配置文件,以便新别名可以立即使用:
function ma { cmd="echo \"alias $1='$2'\" >> ~/.bash_profile"; cmd=${cmd/'$pwd'/$(pwd)}; eval $cmd; echo $cmd; source ~/.bash_profile; echo 'Ready to go'; }