当它是 bash 脚本本身的源时,访问终端 stdin

当它是 bash 脚本本身的源时,访问终端 stdin

解释起来有点混乱。

我有一个想要像这样部署的脚本:

curl -Ls example.com/myscript.sh | bash

问题是脚本从标准输入读取如下内容:

echo "You should edit /srv/pillar/tm.sls now. Comments are in the file."
echo Type "skip" to skip or anything else to edit.
read text
if [ "$text" != "skip" ]; then
sudo pico /srv/pillar/tm.sls
fi

现在,由于 stdin 显然是脚本本身的来源,因此目前无法使用。有什么方法可以重新获得终端吗?

(目前的解决方法是像这样部署curl -Ls example.com/myscript.sh > myscript.sh && bash myscript.sh:)

答案1

用一个流程替代

bash <(curl -Ls example.com/myscript.sh)

相关内容