在bash脚本中读取命令而不是在管道传输到bash时等待用户输入?

时间:2014-04-21 04:51:14

标签: linux bash shell curl terminal

以下是我在终端进入的内容:

curl --silent https://raw.githubusercontent.com/githubUser/repoName/master/installer.sh | bash

安装bash脚本的WordPress包含一个"读取密码"应该等待用户输入MySQL密码的命令。但是,出于某种原因,当我使用" curl githubURL |运行它时,这不会发生。的bash"命令。当我通过wget下载脚本并通过" sh installer.sh"运行它时,它运行正常。

这可能是什么原因?任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

如果要在远程服务器上运行脚本而不在本地保存它,可以试试这个。

#!/bin/bash
RunThis=$(lynx -dump http://127.0.0.1/example.sh)

if [ $? = 0 ] ; then
    bash -c "$RunThis"
else
    echo "There was a problem downloading the script"
    exit 1
fi

为了测试它,我写了一个example.sh:

#!/bin/bash
# File /var/www/example.sh
echo "Example read:"
read line
echo "You typed: $line"

当我运行Script.sh时,输出看起来像这样。

$ ./Script.sh 
Example read:
Hello World!
You typed: Hello World!

除非你完全信任远程脚本,否则我会避免在执行之前不检查它。

答案 1 :(得分:1)

它不会停止阅读: 当你以某种方式管道时,你正在分娩一个已从父壳输入的孩子。 您不能将值返回给父级(修改父级的env)。 通过这个过程,你总是在父母的过程中。