Bash 通过curl执行远程脚本不';行不通

Bash 通过curl执行远程脚本不';行不通,bash,shell,ubuntu,scripting,Bash,Shell,Ubuntu,Scripting,我正在尝试从另一个脚本(test.sh)运行一个脚本(安装和设置Postgres DB)。问题是,在我的脚本中调用的脚本是远程的(在GitHub上联机),并且无法工作 我试着用三种不同的方式来调用脚本 本地-工程 远程使用bash运行curl-s$script时它挂起的原因| bash-s似乎是脚本本身的一种错误行为,至少只要您这样运行它。您可以通过将-x标志添加到bash命令来调试它。然后,由于脚本中包含的while语句,您可以看到以下消息在无休止的循环中生成: ++ read -p 'Do

我正在尝试从另一个脚本(test.sh)运行一个脚本(安装和设置Postgres DB)。问题是,在我的脚本中调用的脚本是远程的(在GitHub上联机),并且无法工作

我试着用三种不同的方式来调用脚本

  • 本地-工程

  • 远程使用
    bash运行
    curl-s$script时它挂起的原因| bash-s
    似乎是脚本本身的一种错误行为,至少只要您这样运行它。您可以通过将
    -x
    标志添加到
    bash
    命令来调试它。然后,由于脚本中包含的
    while
    语句,您可以看到以下消息在无休止的循环中生成:

    ++ read -p 'Do you wan'\''t to install postgres? [y/n]: ' yn
    ++ case $yn in
    

    另外,只要您以这种方式运行脚本,为了避免这种行为,我会删除脚本需要某种用户输入的行。如果不是这样,最简单的方法就是通过
    curl
    下载它,然后从您的终端本地运行它。

    这可以实现您想要的:

    sudo bash -c "bash <(curl -s https://raw.githubusercontent.com/milano-slesarik/sh-ubuntu-instant/master/postgres/setup.sh)"
    

    sudobash-c”bash不应该运行从远程服务器传输的脚本的原因如下:@LéaGris我理解,但这是我的存储库,所以我认为它非常安全,因为没有人可以修改代码。
    
    ++ read -p 'Do you wan'\''t to install postgres? [y/n]: ' yn
    ++ case $yn in
    
    sudo bash -c "bash <(curl -s https://raw.githubusercontent.com/milano-slesarik/sh-ubuntu-instant/master/postgres/setup.sh)"