我不明白出了什么问题。
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
期望从标准输入读取,并且在您进行管道传输时失败(它无法读取您期望读取的内容,而是读取实际脚本的文本,该文本正在标准输入上通过管道传输,从而导致通过read
从脚本中有效删除语句后面的行来消除语法错误)。因此,请使用命令替换来内联执行内容:
bash -c "$(curl https://domain.com/script.sh)"
或者
bash -c "$(wget -O- https://domain.com/script.sh)"