Ubuntu bash는 "$PASSWORD"를 에코합니다. sudo -S WID=$(cat /var/lib/FILE)

Ubuntu bash는 "$PASSWORD"를 에코합니다. sudo -S WID=$(cat /var/lib/FILE)

/var/lib/FILE root:root 0600 (텍스트 한 줄)

/var/lib/FILE을 $WID로 읽는 방법

 echo "$PASSWORD" | sudo -S WID=$(cat /var/lib/FILE) not working for me.

답변1

현재 셸의 변수에 파일 내용이 필요한 경우 위의 접근 방식은 작동하지 않습니다. 할당이 하위 셸에서 수행되고 하위 셸을 종료한 후 손실되기 때문입니다(물론 일부 셸에서는 변수가 손실되지 않습니다). .

작업 하려면 명령을 실행할 수 있는 항목이 sudo있어야 합니다 . sudoers변수 할당은 명령이 아니므로 위의 작업은 다시 실패합니다.

파일의 내용을 변수에 저장하고 싶지만 파일을 읽을 수 있는 권한이 없다면 다음을 시도해 보세요.

WID=$(echo "a" | sudo -S cat /var/lib/FILE)

관련 정보