写入文件+文件名是一个需要稍微操作的字符串



这是一个我想要操作的字符串,并且是我想要写入的文件名的一部分:

$ 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"

相关内容

  • 没有找到相关文章

最新更新