ダッシュ印刷拡張コマンド

ダッシュ印刷拡張コマンド

走るまたはセット-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

関連情報