Bash 提交程序以启动参数不正确的CTL
我发现,LaunchCtl在使用其“提交”协议时会跳过参数 我有以下脚本(script.sh): 当我从终端调用script.sh时,向其中传递参数没有问题。 当我通过LaunchCtl做同样的事情时,出现了一些错误,第一个参数消失了Bash 提交程序以启动参数不正确的CTL,bash,osx-lion,launchd,Bash,Osx Lion,Launchd,我发现,LaunchCtl在使用其“提交”协议时会跳过参数 我有以下脚本(script.sh): 当我从终端调用script.sh时,向其中传递参数没有问题。 当我通过LaunchCtl做同样的事情时,出现了一些错误,第一个参数消失了 launchctl submit -l MyUniqueScript -p ROOT/script.sh -o ROOT/out.txt -e ROOT/err.txt "abc" "def" "ghi" "jkl" 我甚至检查了我的流程 launchctl l
launchctl submit -l MyUniqueScript -p ROOT/script.sh -o ROOT/out.txt -e ROOT/err.txt "abc" "def" "ghi" "jkl"
我甚至检查了我的流程
launchctl list MyUniqueScript
我所有的论点都在那里。终端打印出来
{
"Label" = "MyUniqueScript";
"LimitLoadToSessionType" = "Background";
"OnDemand" = false;
"LastExitStatus" = 256;
"TimeOut" = 30;
"Program" = "/Users/ROOT/script.sh";
"StandardOutPath" = "/Users/ROOT/out.txt";
"StandardErrorPath" = "/Users/ROOT/err.txt";
"ProgramArguments" = (
"abc";
"def";
"ghi";
"jkl";
);
};
但是我在out.txt中的内容非常混乱:
defghijkl
而不是
abcdefghijkl
有人能帮我解决这个问题吗?有人知道我应该做什么,或者我错了什么吗
我还必须指出,上面的小例子当然不是我正在编写的原始脚本。这更容易说明我的问题
请帮帮我!谢谢 您的launchctl语法错误。第一个“参数”应该是脚本的路径:
launchctl submit -l MyUniqueScript -p ROOT/script.sh -o ROOT/out.txt -e ROOT/err.txt -- ROOT/script.sh "abc" "def" "ghi" "jkl"
从手册页:
提交-l标签[-p可执行文件][-o路径][-e路径]--命令[args]
-p
设置似乎是用于别名的,但我不确定为什么这会有用
-p节目不管接下来发生什么,真正要执行的程序是什么 提交子命令中的--
因此,在您的例子中,launchctl将您的第一个参数视为要运行的脚本,但实际上是在运行您的脚本,因为您使用
-p
将其指定为可执行文件。如上所述,将脚本指定为arg 0,或者只需删除-p
规范,并在其args之前包含脚本的路径。您可以发布实际脚本的相关部分吗?我可能会帮助我们了解为什么“ProgramArguments”的第一个元素似乎没有传递给script.sh。那么基本上,您是说手册中的“command”指的是脚本本身?我的意思是,在我的情况下,这是一个脚本。。在其他情况下,它当然可以是单行命令。。。。谢谢你的帮助!
launchctl submit -l MyUniqueScript -p ROOT/script.sh -o ROOT/out.txt -e ROOT/err.txt -- ROOT/script.sh "abc" "def" "ghi" "jkl"