나는 무엇이 잘못되었는지 이해하지 못합니다.
bash
wget
스크립트를 전달 하거나 실행하는 동안 curl
구문 오류로 인해 스크립트가 중단되었습니다 . 로컬 파일로 다운로드하여 실행하면 작동하지만 bash script.sh
.
wget -O- https://domain.com/script.sh | bash
curl https://domain.com/script.sh | bash
실수:
bash: line 114: syntax error near unexpected token "fi"
코드는 다음과 같습니다.
...
while [[ ! $db_database ]]; do
echo
read -p "MySQL Database: " db_database
done
if [[ -z $db_prefix ]]; then
echo
read -p "MySQL Table Prefix [lc_]: " db_prefix
if [[ ! $db_prefix ]]; then
db_prefix="lc_"
fi # <-- This is the line, 114
fi
if [[ -z $db_collation ]]; then
echo
read -p "MySQL Collation [utf8_swedish_ci]: " db_collation
if [[ ! $db_collation ]]; then
db_collation="utf8_swedish_ci"
fi
fi
...
답변1
문제는 read
stdin에서 읽을 것으로 예상하고 파이프할 때 실패한다는 것입니다(읽을 것으로 예상되는 내용을 읽지 않고 대신 stdin에서 파이프되는 실제 스크립트의 텍스트를 읽으므로 구문이 발생합니다). read
스크립트에서 명령문 다음 줄을 효과적으로 삭제 하면 오류가 제거됩니다 . 따라서 명령 대체를 사용하여 인라인으로 실행하십시오.
bash -c "$(curl https://domain.com/script.sh)"
또는
bash -c "$(wget -O- https://domain.com/script.sh)"