컬 또는 wget을 통해 웹 스크립트를 실행할 때 구문 오류가 발생합니다.

컬 또는 wget을 통해 웹 스크립트를 실행할 때 구문 오류가 발생합니다.

나는 무엇이 잘못되었는지 이해하지 못합니다.

bashwget스크립트를 전달 하거나 실행하는 동안 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

문제는 readstdin에서 읽을 것으로 예상하고 파이프할 때 실패한다는 것입니다(읽을 것으로 예상되는 내용을 읽지 않고 대신 stdin에서 파이프되는 실제 스크립트의 텍스트를 읽으므로 구문이 발생합니다). read스크립트에서 명령문 다음 줄을 효과적으로 삭제 하면 오류가 제거됩니다 . 따라서 명령 대체를 사용하여 인라인으로 실행하십시오.

bash -c "$(curl https://domain.com/script.sh)"

또는

bash -c "$(wget -O- https://domain.com/script.sh)"

관련 정보