我正在尝试使用 eval 设置多行变量
$ k="A
B
C"
$ echo "$k"
A
B
C
$ eval 'k="1
2
3"'
$ echo "$k"
1
2
3
Run Code Online (Sandbox Code Playgroud)
但我想使用 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...
Run Code Online (Sandbox Code Playgroud)
我需要在 eval 语句周围加上某种引号,但我在内部使用单引号和双引号,单引号可能会弄乱我在脚本内使用的“$k”。我尝试将执行的代码放入定界符中,但没有成功,尽管也许我做错了。
帮助和建议将不胜感激。
请注意,这只是问题的一个最小示例,而不是我的完整应用程序。
按原样重用您的 awk 脚本并假设您确实有充分的理由想要这样做:
$ eval "$(echo "$k" | awk 'BEGIN{RS="";FS="[ \t]+"}{print "awkV=\""$0"\""}')"
Run Code Online (Sandbox Code Playgroud)
$ echo "$awkV"
A
B
C
Run Code Online (Sandbox Code Playgroud)
请参阅https://mywiki.wooledge.org/BashFAQ/082,了解使用命令替换而$(...)不是旧的、脆弱的、古怪的反引号的原因和其他原因。
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |