在终端运行不工作

win*_*rse 5 command-line bash execute-command

我是 Ubuntu 的新手,我试图运行这个脚本:

#!/usr/bin/env bash
echo hello world
Run Code Online (Sandbox Code Playgroud)

如果我先打开终端并手动调用它,它工作正常。喜欢./test
我在文件首选项中设置了“每次询问”: 在此处输入图片说明

这也很好用: 在此处输入图片说明

现在我单击在终端中运行。还有洛!什么都不会发生。
我希望它打开终端并回显 hello world。我究竟做错了什么?这是 ubuntu 的全新安装以及来自 ubuntu 网站的 windows。

Byt*_*der 9

你的问题:

问题是echo hello world在毫秒内执行,比终端窗口能够弹出的速度快。

这意味着您的脚本在终端可见之前已经退出,因此它的启动被取消并且您什么也看不到。

解决方案 1 - 修改脚本并添加延迟:

您可以在脚本末尾添加延迟(此处:5 秒),以便它运行更长时间,并且您有时间在脚本退出和终端窗口自行关闭之前查看结果:

#!/usr/bin/env bash
echo hello world
sleep 5
Run Code Online (Sandbox Code Playgroud)

解决方案 2 - 修改脚本并等待按键:

您还可以read在脚本的末尾添加一个命令,以在脚本退出之前等待键盘输入。

-s参数会导致无声输入,即您按下的键不会回显到终端。
-n1让它只读取一个字符,然后立即返回,而不是等待Enter按下。
-p "Press any key to exit..."参数实际上指定了在等待输入之前要打印的文本。

#!/usr/bin/env bash
echo hello world
read -s -n1 -p "Press any key to exit..."
Run Code Online (Sandbox Code Playgroud)

解决方案 3 - 更改gnome-terminal的首选项以保持窗口打开:

启动一个gnome-terminal窗口,打开编辑菜单并选择配置文件首选项。导航到命令选项卡。您将看到一个标记为When command exits的下拉菜单

在此处输入图片说明

选择在此处打开保持终端并关闭设置窗口。

从现在开始,当您双击脚本并选择在终端中运行它时,窗口将不再自行关闭,而是保持打开状态并显示一个横幅,通知您脚本的退出状态:

在此处输入图片说明

警告!
如果您手动打开终端窗口并尝试通过使用exit命令或Ctrl+退出 Bash 来关闭它,此设置也适用D- 我发现终端窗口不再关闭,这很烦人。