대시 인쇄 확장 명령

대시 인쇄 확장 명령

달리기또는세트-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

관련 정보