명령 프롬프트에서 if 문 실행

명령 프롬프트에서 if 문 실행

Bash에서는 다음을 수행할 수 있습니다.

if [ -f /tmp/test.txt ]; then echo "true"; fi

그러나 sudo앞에 추가하면 더 이상 작동하지 않습니다.

sudo if [ -f /tmp/test.txt ]; then echo "true"; fi
-bash: syntax error near unexpected token `then'

어떻게 작동하게 할 수 있나요?

답변1

sudoexec쉘 인터프리터를 통하지 않고 쉘 인터프리터를 사용하여 인수를 실행하십시오 . 따라서 실제 바이너리 프로그램으로 제한되며 쉘 함수, 별칭 또는 내장 함수( if내장 함수)를 사용할 수 없습니다. -i및 옵션 을 -s사용하여 각각 로그인 또는 비로그인 셸에서 특정 명령을 실행할 수 있습니다(또는 대화식으로 셸을 실행합니다. 세미콜론을 이스케이프하거나 명령을 인용해야 합니다).

$ sudo if [ -n x ]; then echo y; fi
-bash: syntax error near unexpected token `then'
$ sudo if [ -n x ]\; then echo y\; fi
sudo: if: command not found
$ sudo -i if [ -n x ]\; then echo y\; fi
y
$ sudo -s 'if [ -n x ]; then echo y; fi'
y

답변2

셸을 통해 문자열 인수로 이 줄을 호출해 보세요.

sudo /bin/sh -c 'if [ -f /tmp/test.txt ]; then echo "true"; fi'

관련 정보