考虑这个bash脚本:
#!/bin/bash
while true; do
read -p "Give me an answer ? y/n : " yn
case $yn in
[Yy]* ) answer=true ; break;;
[Nn]* ) answer=false ; break;;
* ) echo "Please answer yes or no.";;
esac
done
if $answer
then
echo "Doing something as you answered yes"
else
echo "Not doing anything as you answered no"
fi
使用以下命令从命令行运行时
$ ./script-name.sh
正如预期的那样,脚本等待您回答 y 或 n 。
但是当我上传到网址并尝试使用以下网址运行时
$ curl http://path.to/script-name.sh | bash
我陷入永久循环,脚本说Please answer yes or no.
显然脚本正在接收除 y 或 n 以外的某种输入。
这是为什么?更重要的是,如何从来自url的bash脚本中获取用户输入?
答案 0 :(得分:4)
您可以像这样运行:
bash -c "$(curl -s http://path.to/script-name.sh)"
因为您要向bash
解释器提供bash脚本的内容。使用curl -s
进行静默执行。