heredoc
을 pipeline
과 혼동하고 있습니다. 변수 확장과
히어 닥 : 변수 확장없이
cat <<EOF
some text, possibly with variables: ${HOME}/$(whoami)
EOF
이
some text, possibly with variables: /home/attie/attie
히어 닥은 :
: 변수 확장과
cat <<"EOF"
some text, possibly with variables: ${HOME}/$(whoami)
EOF
some text, possibly with variables: ${HOME}/$(whoami)
파이프 라인
(따옴표,
"
주의) 변수 확장없이
some text, possibly with variables: /home/attie/attie
파이프 라인 (따옴표, '
주) :
echo 'some text, possibly with variables: ${HOME}/$(whoami)' | cat
some text, possibly with variables: ${HOME}/$(whoami)
${...}
것은
$(...)
이 명령을 실행하는 환경 변수를 확장, 그 stdout
을 대체
sudo는 비밀번호를 취득 할 수있는 터미널을 다시 열립니다로 최종 응용 프로그램에
stdin
의 전달하기 전에,이 작동하지 않습니다 - 당신은 당신의 암호를
sudo
을 체결하려는처럼
는 또한 보인다.
PASSWORD="mypassword"
RUNCOMMAND=$(cat <<EOF
echo $PASSWORD | sudo -S sudo echo "this is it babe"
EOF
)
그리고 eval
를 통해 그것을 실행 :
여기에서 나무를 찾는 동안 숲을 잃어 버렸을 수 있습니까? 실제 문제는 다소 단순한 것 같습니다. 어쨌든 heredoc 블록 안의 코드는 실행되지 않습니다. 그것이 요점입니다. 실행을 원하면 일반 코드로 작성하십시오. – 5gon12eder