"`_`, `-`, `--` 또는 쉘 오류 메시지의 빈 문자열"은 무엇을 의미합니까?

"`_`, `-`, `--` 또는 쉘 오류 메시지의 빈 문자열"은 무엇을 의미합니까?

~에서https://unix.stackexchange.com/a/156010/674

위의 두 번째 항목은 sh인라인 스크립트로 들어갑니다 . 셸 오류 메시지에 사용되는 빈 문자열 이 아닌 $0관련 항목(예: shor find-sh) 을 사용해야 합니다._---

$ find . -name accept_ra -exec sh -c 'echo 0 > "$1"' inline-sh {} \;
inline-sh: ./accept_ra: Permission denied

_" -, --또는 쉘 오류 메시지의 빈 문자열"은 무엇을 의미합니까?

또는 빈 문자열이 아니기 때문에 inline-sh예제에서 work를 사용하지 않는 이유는 무엇입니까?inline-sh_---

감사해요.

답변1

"쉘에 대한 오류 메시지"의 제목은 " $0"이 아니거나 "가 아니 거나 _빈 문자열"입니다. 주어진 값은 오류 메시지에 사용되므로 이에 대해 의미 없는 값을 지정하면 안 됩니다. 그렇지 않으면 이상한 오류 메시지가 표시됩니다. 이게 더 말이 될 수도 있겠네요---$0$0

위의 두 번째 항목은 sh인라인 스크립트로 들어갑니다 . 와 같은 항목 이나 빈 문자열이 아닌 $0관련 항목(예: shor find-sh) 을 사용해야 합니다 . 왜냐하면 in 의 값이 셸의 오류 메시지에 사용되기 때문입니다._---$0

inline-sh 하다예제에서 작업하기: 예제의 초점인 오류 메시지에 사용됩니다.

답변2

$ find . -name accept_ra -exec sh -c 'echo 0 > "$1"' inline-sh {} \;
inline-sh: ./accept_ra: Permission denied

오류 메시지는 파일을 inline-sh열 수 없다는 것을 알려줍니다 ./accept_ra.

$ find . -name accept_ra -exec sh -c 'echo 0 > "$1"' _ {} \;
_: ./accept_ra: Permission denied
$ find . -name accept_ra -exec sh -c 'echo 0 > "$1"' '' {} \;
: ./accept_ra: Permission denied

파일을 열지 못하는 정확한 이유가 무엇인지 사용자에게 덜 명확하고 더 혼란스럽게 만듭니다 ./accept_ra.

따라서 이후의 첫 번째 매개변수에는 의미 있는 값을 사용하는 것이 좋습니다 sh -c 'code'. 일반적으로 명령 이름을 반복하면 작동합니다. 에서와 같이

sh -c 'code using "$@"' sh  actual arguments to the inline script

관련 정보