質問: 引用符付きのbash awkコマンド 私はしばらくの間、この質問に対する答えを見つけようと努めてきました。 awkからの出力に基づいてコマンドを実行する簡単なスクリプトを書いています。id_minimum=1000 for f in /etc/passwd; do awk -f: -vid=$id_minimum '$3>=1000 && $1!="nfsnobody" { print "xfs_quota -x -c 'limit bsoft=5g bhard=6g $1' /home "}' $f; done 問題は、-c引数が一重引用符で囲まれたコマンドを受け取り、それを適切にエスケープする方法を理解できず、$1がユーザー名に展開されないことです。基本的に私はそれを出力させようとしているだけです:xfs_quota -x -c 'limit bsoft=5g bhard=6g userone' /home xfs_quota -x -c 'limit bsoft=5g bhard=6g usertwo' /home 等...
回答: 使用 -f - awkのオプションで、標準入力とヒアドキュメントからスクリプトを取得します。awk -f: -v "id=$id_minimum" -f - <<'eot' /etc/passwd $3>=1000 && $1!="nfsnobody" { print "xfs_quota -x -c 'limit bsoft=5g bhard=6g "$1"' /home " } eot