在我的 bash 脚本中,我尝试使用以下行来扩展我的 bashrc:
to_print="alias $nom_machine='ssh $nom_machine'"
target_file="~/.bashrc"
echo -e "$to_print" >> "$target_file"
执行时,出现错误:
~/.bashrc: No such file or directory
但该文件存在,它有 236 行:
$ cat ~/.bashrc | wc -l
236
我的脚本有什么问题?
我在 Linux Ubuntu 14.05 上
答案1
据该消息来源称(https://askubuntu.com/questions/510216/trouble-using-cd-command-with-or-home-in-bash-scripting),你应该使用:
eval echo -e "$to_print" >> "$target_file"
原因如下
问题是波浪号扩展发生在变量扩展之前
答案2
~(波浪号)在脚本或引号中使用时并不总是按照您期望的方式运行(我不能保证其cat "~/.bashrc"
行为相同),我建议改用${HOME}
(带或不带括号)。