【问题标题】:Unable to print user input after executing the script by opening the gnome-terminal通过打开 gnome-terminal 执行脚本后无法打印用户输入
【发布时间】:2019-09-16 09:35:40
【问题描述】:

我正在尝试制作通过双击在终端上执行的脚本,并且应该要求用户输入。要执行脚本,请打开 gnome-terminal,它将执行进一步的脚本。在 RESP 中获取用户输入后,它无法打印传递的值(y/n)。带有 nautilus 的 Gnome 终端。

gnome-terminal -- bash -c "read -p 'Include log?(y/n)' RESP
echo '$RESP'
    if[ '$RESP' = 'y' ]; then
       //logic for yes
    else
       //logic for no
    fi; 
exec bash"

echo $RESP没有打印任何东西?

【问题讨论】:

    标签: bash readline gnome-terminal


    【解决方案1】:

    试试这个

    bash -c "read -p 'Include log?(y/n)' RESP
    echo \$RESP
    if [ \$RESP = 'y' ]; then
      echo y
    else
      echo n
    fi"
    

    您需要为变量转义 $ 而不是将其放入 '

    【讨论】:

    • 所以请接受它作为答案。你这样做是在帮助社区和我。
    【解决方案2】:

    脚本字符串中的" 使变量为空(未定义的变量扩展为空)。它使 echo 为空。我用' 交换了",它工作正常。

    gnome-terminal -- bash -c 'read -p "Include log?(y/n)" RESP
                                         echo "$RESP"; sleep 10
                                             if[ "$RESP" = "y" ]; then
                                                echo YES
                                             else
                                                echo NO
                                             fi; 
                                         exec bash'
    

    【讨论】:

    • 谢谢亚历克斯!现在澄清一下 ' 和 "
    • NP(没问题)。去过那里,做到了。您可以对两个答案都投赞成票。
    • 没有那么高的声望来投票,当达到我会的时候
    猜你喜欢
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多