私は何が間違っているのか分かりません。
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)"