자동 chroot 스크립트의 변수에 출력 할당

자동 chroot 스크립트의 변수에 출력 할당

나는 평생 동안 스크립트를 통해 루트를 변경하고 변수에 값을 할당하는 방법을 알아낼 수 없습니다. 좋습니다. 스크립트 흐름을 중단하지 않고 스크립트에서 명령을 루트로 이동하고 실행하는 방법을 배웠습니다.

#!/bin/bash
# Mini script for chrooting into chroot_dir and executing commands.

chroot_dir=$1
cat << EOF | chroot $chroot_dir /bin/bash
sysname=\`hostname\`
echo "You are running script.sh on ${sysname}"
EOF

이 스크립트를 실행하면 ./script.sh "/chroot_dir/"다음과 같은 결과가 나타납니다.

script.sh를 실행 중입니다.

sysname이 할당되지 않았거나 sysname이 즉시 해당 값을 잃는 것처럼 보입니다. 이 방법을 사용하여 chroot의 sysname에 값을 할당하려면 어떻게 해야 합니까?

답변1

그 이유는 ${sysname}나중에 실행할 때가 아니라 스크립트를 읽을 때 평가되기 때문입니다. \dollar() 앞에 백슬래시()를 추가 하면 $더 잘 작동합니다 . 와는 아무 관련이 없지만 chroot의 기능임을 참고하세요 bash.

관련 정보