Bash
通過 curl 或 wget 執行 Web 腳本時出現語法錯誤
我不明白出了什麼問題。
通過執行
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 ...
問題是
read
期望從標準輸入讀取,並且在您進行管道傳輸時失敗(它無法讀取您期望讀取的內容,而是讀取實際腳本的文本,該文本通過標準輸入管道輸入,導致通過有效地read
從腳本中刪除語句之後的行來解決語法錯誤)。所以使用命令替換來執行內聯內容:bash -c "$(curl https://domain.com/script.sh)"
或者
bash -c "$(wget -O- https://domain.com/script.sh)"