这是一个我想要操作的字符串,并且是我想要写入的文件名的一部分:
$ 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
??
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而不是bash:
a="NAME_${${val1// /_}//"/}_NAME"