我正在尝试用 cron 包装器做一些事情,我的 cron 看起来像
* * * * * root /usr/bin/wrapper cd /tmp/ && ls
Run Code Online (Sandbox Code Playgroud)
然后包装看起来像
#!/bin/bash
"$@"
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我无法让分号或 && 像我希望的那样工作。
[root@domain.net ~/test]# pwd
/root/test
[root@domain.net ~/test]# ls
test.sh
[root@domain.net ~/test]# ./test.sh cd /tmp && ls
test.sh
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,它进入 tmp 然后 weapper 脚本退出..它在我的 cwd 中运行 ls。
如果我在命令周围添加 '' 我得到
[root@domain.net ~/test]# ./test.sh 'cd /tmp && ls'
./test.sh: line 3: cd /tmp && ls: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我猜用“$@”它正试图将单引号添加到正在运行的命令中
我支持我可以去掉 "$@" 之前的单引号,但我希望不要这样做.. 任何提示或者这甚至可以在 bash 中解决?
/usr/bin/wrapper cd /tmp/ && ls
被解析为(/usr/bin/wrapper cd /tmp/) && ls
. 即使您确实设法wrapper
正确地将参数传递给它,它也无法理解它们;&&
是一个外壳结构。我不确定您使用此包装器脚本的确切目标是什么,但我怀疑您可以将其替换为bash -c
,它接受一个字符串并告诉 bash 评估它,就像您直接将它输入到 shell 中一样:
* * * * * root bash -c "cd /tmp/ && ls"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
178 次 |
最近记录: |