![컬 또는 wget을 통해 웹 스크립트를 실행할 때 구문 오류가 발생합니다.](https://linux55.com/image/175451/%EC%BB%AC%20%EB%98%90%EB%8A%94%20wget%EC%9D%84%20%ED%86%B5%ED%95%B4%20%EC%9B%B9%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EB%95%8C%20%EA%B5%AC%EB%AC%B8%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4..png)
나는 무엇이 잘못되었는지 이해하지 못합니다.
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)"