我发现,LaunchCtl 在使用它的“提交”协议时会跳过参数。
我有以下脚本(script.sh):
#!/bin/bash
arg1="$1"
arg2="$2"
arg3="$3"
arg4="$4"
echo $arg1$arg2$arg3$arg4
exit 1
当我从终端调用 script.sh 时,将参数传递给它没有问题。当我通过 LaunchCtl 做同样的事情时,出现了问题,第一个参数消失了。
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
谁能帮我解决这个问题?有谁知道我应该做什么,或者我错了什么?
我还必须说,上面的小例子当然不是我正在处理的原始脚本。这更容易显示我的问题。
请帮我!谢谢!