2013-06-05 47 views
0

节省定界符变量时使用$(建造,然后在bash创建here文档的换行符被改为美元符号$。特殊性在庆典

[email protected]:/shared/git2/etl/appminer$ IRB=$(cat -e<<'HERE' 
> require 'irb/ext/save-history' 
> IRB.conf[:SAVE_HISTORY] = 100 
> IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history" 
> HERE 
>) 
[email protected]:/shared/git2/etl/appminer$ echo $IRB 
require 'irb/ext/save-history'$ IRB.conf[:SAVE_HISTORY] = 100$ IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"$ 

要打印的变量中的双引号不转换到换行符但仍保留了美元符号:

[email protected]:/shared/git2/etl/appminer$ echo "$IRB" 
require 'irb/ext/save-history'$ 
IRB.conf[:SAVE_HISTORY] = 100$ 
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"$ 

注:这是一个后续约在bash定界符变量的SOF问题:以下How to assign a heredoc value to a variable in Bash?

回答

3

如果要删除美元符号,请勿使用cat-e开关。这是-e,标记为$尾。它也做其他事情。

为什么你想分配一个here-doc到一个变量中?不正常的任务是否能更轻松地完成这项工作?例如:

[email protected]:/shared/git2/etl/appminer$ IRB="require 'irb/ext/save-history' 
IRB.conf[:SAVE_HISTORY] = 100 
IRB.conf[:HISTORY_FILE] = \"#{ENV['HOME']}/.irb-save-history\" 
"