[英]Grouping command substitution without double quotes? “$()” without the “”
我正在編寫一個腳本,該腳本涉及生成Awk程序並通過awk $(...)
運行它們,如
[lynko@hephaestus] ~ % awk $(echo 'BEGIN { print "hello!" }')
最終生成的程序將變得更加復雜,但是首先我要確保這是可能的。 過去我做過
[lynko@hephaestus] ~ % program=$(echo 'BEGIN { print "hello" }')
[lynko@hephaestus] ~ % awk "$program"
hello!
分組不足為奇的地方。 但是第一個示例(在GNU awk下,比在其他計算機上默認設置的mawk提供了更有用的錯誤消息)給出了
[lynko@hephaestus] ~ % awk $(echo 'BEGIN { print "hello!" }')
awk: cmd. line:1: BEGIN blocks must have an action part
大概是因為這是以awk BEGIN { print "hello!" }
awk BEGIN { print "hello!" }
而不是awk 'BEGIN { print "hello!" }'
awk 'BEGIN { print "hello!" }'
。 有什么方法可以迫使$(...)
保留為一組? 我寧願不使用"$()"
因為我必須在程序生成器中轉義所有雙引號。
我在Crunchbang Waldorf上運行Bash 4.2.37和mawk 1.3.3。
用引號引起來。 您不需要轉義其中的雙引號:
awk "$(echo 'BEGIN { print "hello!" }')"
我也想知道為什么您要使用echo語句。 Awk不需要一個。
awk 'BEGIN { print "Awk SQUAWK!" }'
那將完美地工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.