为什么 xterm 不能与我的脚本一起工作?

为什么 xterm 不能与我的脚本一起工作?

我的脚本: echo 123456 > /folder/folder/123.txt

我使用 xterm 运行了该脚本:xterm -e my.sh &

它不起作用。

答案1

您的 xterm 调用存在一个主要问题和可能存在的一个小问题。首先 - 您不希望 & 将脚本置于后台 - 它很可能完全按照您的要求执行并在后台运行(实际上是不可见的 - 您可以在启动它的 shell 中使用 ps 或 jobs 查看它;在任何地方使用 ps -A 等)。

我对您的情况的理解是,您正在尝试生成一个新的 xterm 实例并在其中执行该脚本;但它不会在后台执行此操作(至少在可见范围内)。

其次,您应该提供 my_script.sh 的完整路径,使用它的完整路径,并将 -e 标志的参数完全括在引号中,例如“/home/you/my_script.sh”

这可能不会给你带来问题;我不确定。如果你将来编写类似的脚本,它会在某个时候给你带来问题,因为如果没有引号,你可能会成为无意的 bash 扩展的受害者。

最后一点 - 从 bash shell 调用 bash 脚本时,#!/bin/bash 实际上完全没有必要。这是个好习惯,而且它使它更易于移植 - 其他人会跳出来并说“#!/usr/bin/env bash 更易于移植”,是的,确实如此。但是,假设您从 bash 调用脚本(但无论如何您都应该始终拥有它),您不需要任何一个来使其工作。

答案2

确保您的脚本以以下形式的 shebang 开头:

#!/bin/bash #(or #!/bin/sh for POSIX compliance)

接下来,通过运行以下命令确保你的脚本可执行:

$ chmod +x my_script.sh

最后尝试运行你的脚本:

$ ./my_script.sh

请记住,xterm 是一个图形终端模拟器,而不是 Bash 本身。

相关内容