su가 실행하는 명령에 인수 전달

su가 실행하는 명령에 인수 전달

다른 사용자(현재 사용자는 루트)로 명령을 실행하고 싶습니다. 그러므로 나는한다

su newuser -c 'mkdir "/tmp/test"'

하지만 매개변수를 전달하는 데 문제가 있습니다.

i="name"
su newuser -c 'mkdir "/tmp/$i"'

아니면 스크립트에서

su newuser -c 'mkdir "/tmp/$1"'

답변1

이 동작의 이유는 작은따옴표 내에서 변수 확장이 비활성화되기 때문입니다. 큰따옴표 내에서는 활성화됩니다. 예를 들어 참조하십시오.이 Q&A더 많은 통찰력을 얻으려면.

su따라서 다음과 같이 통화를 변경해 볼 수 있습니다 .

i="name"
su newuser -c "mkdir '/tmp/$i'"

이제 인수가 su큰따옴표로 묶여 있으므로 $i작은따옴표(최종 결과가 전달되는 해석 쉘의 경우 su)는 단지 "텍스트"일 뿐이고 더 이상 특별하지 않기 때문에 확장됩니다.

관련 정보