2016-07-25 32 views
0

操纵这是一个字符串我想操纵,是一个文件名我要写入组成部分的字符串:写入文件+文件名是需要稍微

$ echo "$val1" 
"$29.95 Carryover Plan 1GB" 

这就是我想要的文件名为(用下划线和双引号删除的空格),并在开始处添加NAME_,并在末尾添加_NAME

$ echo "NAME_"$val1"_NAME" | sed s/" "/_/g | sed s/'"'/''/g 
NAME_$29.95_Carryover_Plan_1GB_NAME 

,这是我努力的测试数据写入到文件中的问题

$ a="NAME_"$val1"_NAME" | sed s/" "/_/g | sed s/'"'/''/g && echo "test123" > "$a" 

但它不出来,因为我想"$29.95_Carryover_Plan_1GB"

$ ls -lth 
total 44M 
-rw-r--r-- 1 kevin.smith mkpasswd 8 Jul 25 16:08 "$29.95_Carryover_Plan_1GB" 

我如何写到文件和文件名是NAME_$29.95_Carryover_Plan_1GB_NAME ??

回答

1
a="NAME_"$val1"_NAME" | sed s/" "/_/g | sed s/'"'/''/g 

不会做我期望你想要的。你需要真正echo变量:

a="$(echo "NAME_"$val1"_NAME" | sed s/" "/_/g | sed s/'"'/''/g)" 

或者更好一点(IMO):

a="$(echo "NAME_${val1}_NAME" | sed 's/ /_/g;s/"//g')" 

或者,如果你正在运行的zsh而不是击:

a="NAME_${${val1// /_}//\"/}_NAME" 
+0

' $ a =“NAME _ $ {$ {val1 ///_} // \”/} _NAME“ -sh:NAME _ $ {$ {val1 ///_} // \”/} _ NAME:bad substitution' that是aqi问[这里](http://stackoverflow.com/questions/38559463/how-to-replace-spaces-with-underscore-and-doublequotes-with-没有在bash/38561193#38561193),并被告知它无法完成。你能解释我为什么会得到'不好的替代品'吗? – HattrickNZ

+1

我忘了注意这在bash中不起作用。现在修复。 – viraptor

+0

为此,引导我到另一个[q](https://en.wikipedia.org/wiki/Z_shell) – HattrickNZ

相关问题