gpt4 book ai didi

bash - 为什么以下 bash 脚本在使用 nohup 调用时不起作用?

转载 作者:行者123 更新时间:2023-11-29 09:23:44 24 4
gpt4 key购买 nike

像下面这样的脚本:

#!/bin/bash

function hello {

echo "Hello World"

}

hello

可以正常工作,但是当我用 nohup 调用它时

nohup ./myScript.sh 

脚本不再有效,打印出以下内容:

./myScript.sh: 5: ./myScript.sh: function: not found
Hello World
./myScript.sh: 9: ./myScript.sh: Syntax error: "}" unexpected

我知道对这个脚本使用 nohup 没有意义,因为它运行得相当快,但我有另一个脚本需要几个小时才能运行,我已经在它。有办法解决这个问题吗?

最佳答案

注意到declare a function in POSIX standard shell ,您只需编写函数名称,后跟一对空括号和大括号中的函数体:

#!/bin/bash

hello() {
echo "Hello World"
}

hello

某些 shell,如 bash,也接受 function 关键字来声明函数,但根据您的错误消息,您使用的 shell 似乎不接受它。为了可移植性,最好使用 POSIX 标准声明样式。

您看到直接运行脚本与在 nohup 下运行脚本之间存在差异的原因是文件开头的空行。 #! 必须是文件的前两个字符 才能指定解释器,否则这只是注释。看起来当从 Bash shell 中执行时,脚本会被 Bash 解释并识别 Bash 扩展。但是当从 nohup 运行时,它会被 sh 解释,在某些系统上它是一个更简单的 shell,如 dash 只支持上面的 POSIX 语法。

关于bash - 为什么以下 bash 脚本在使用 nohup 调用时不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24944405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com