走る道またはセット-xBash を使用すると、拡張コマンドが印刷されます。
$ bash -xc 'touch "alfa bravo"'
+ touch 'alfa bravo'
ただし、Dash は実際のコマンド実行を印刷しません。
$ dash -xc 'touch "alfa bravo"'
+ touch alfa bravo
printコマンドは2つのファイルを生成するようですが、実際には1つのファイルを生成します。 Dashは実行された実際のコマンドを印刷できますか?
答え1
これは本当に悪い解決策ですが、トリックを実行しているようです。
BEGIN {
w = "\47"
while (++i < ARGC) {
x = split(ARGV[i], y, w)
for (each in y) {
if (y[each] ~ /[^[:alnum:]%+,./:=@_-]/)
printf w y[each] w
else
printf y[each]
if (each < x)
printf "\\" w
}
if (i == ARGC - 1)
printf RS
else
printf FS
}
}
結果:
$ awk -f charlie.awk touch "alfa bravo"
touch 'alfa bravo'
$ awk -f charlie.awk touch 'alfa"bravo'
touch 'alfa"bravo'
$ awk -f charlie.awk touch "alfa'bravo"
touch alfa\'bravo