다른 bash 스크립트 안에 bash 스크립트를 삽입하는 올바른 방법

다른 bash 스크립트 안에 bash 스크립트를 삽입하는 올바른 방법

다음 코드를 제안하거나 수정하거나 가능하면 더 간단하게 만드십시오.

이 파일은 단일 쉘 스크립트 파일에 포함되어야 합니다.

Embedded.sh

#!/bin/bash
echo '#!/bin/bash
read input
while [[ $input -eq Y ]]; do echo hi ; done ' > /tmp/test.sh
chmod ugo+w /tmp/test.sh ; chmod ugo+w /tmp/test.sh ; chmod ugo+x /tmp/test.sh
konsole -e sh /tmp/test.sh
rm /tmp/test.sh

답변1

#!/bin/bash

out=/tmp/script.sh

data='
IyEvYmluL2Jhc2gKcmVhZCBpbnB1dAp3aGlsZSBbWyBcJGlucHV0IC1lcSBZIF1dOyBkbyAj
IG5vdGUgdGhlIGVzY2FwZWQgJCBoZXJlCiAgZWNobyBoaQpkb25lCg=='

base64 -d <<<"$data" >"$out" &&
chmod +x "$out"

포함된 스크립트를 인코딩합니다. 여기서는 base64 인코딩을 사용하고 있습니다. 더 큰 스크립트의 경우 gzip인코딩을 사용하기 전에 데이터를 압축한 base64다음 디코딩을 사용한 후에 압축을 푸십시오 base64 -d <<<"$data" | gzip -cd >"$out".

답변2

구분 기호가 더 읽기 쉽습니다.

#!/bin/bash
tempscript="$(mktemp)"
trap 'rm "$tempscript"' EXIT
cat > "$tempscript" << EOF
#!/bin/bash
read input
while [[ \$input -eq Y ]]; do # note the escaped $ here
  echo hi
done
EOF
chmod u+x "$tempscript"
"$tempscript"

관련 정보