我正在尝试使用 eval 设置多行变量
$ k="A
B
C"
$ echo "$k"
A
B
C
$ eval 'k="1
2
3"'
$ echo "$k"
1
2
3
但是我想使用 awk 通过 awk 脚本生成我的变量
$ echo "$k" | awk 'BEGIN{RS="";FS="[ \t]+"}{print "awkV=\""$0"\""}'
awkV="1
2
3"
$ eval `echo "$k" | awk 'BEGIN{RS="";FS="[ \t]+"}{print "awkV=\""$0"\""}'`
$ echo "$awkV"
1 2 3
$ eval '`echo "$k" | awk 'BEGIN{RS="";FS="[ \t]+"}{print "awkV=\""$0"\""}'`'
-bash: unexpected EOF while looking for matching ``'
-bash: syntax error: unexpected end of file
bash: awkV="-bash"}`: command not found...
我需要在 eval 语句周围加上某种引号,但我在内部使用单引号和双引号,单引号可能会弄乱我在脚本内使用的“$k”。我尝试将执行的代码放入定界符中,但没有成功,尽管也许我做错了。
如有帮助和建议,我们将不胜感激。
请注意,这只是问题的一个最小示例,而不是我的完整应用程序。
$ eval "$(echo "$k" | awk 'BEGIN{RS="";FS="[ \t]+"}{print "awkV=\047"$0"\047"}')"
$ echo "$awkV"
A
B
C