クローンラッパーで何かをしようとしていますが、私のクローンは次のようになります。
* * * * * root /usr/bin/wrapper cd /tmp/ && ls
ラッパーは次のようになります。
#!/bin/bash
"$@"
実行時にセミコロンまたは&&が必要に応じて機能するようにすることはできません。
[[email protected] ~/test]# pwd
/root/test
[[email protected] ~/test]# ls
test.sh
[[email protected] ~/test]# ./test.sh cd /tmp && ls
test.sh
したがって、この場合はtmpに入り、次にweapperスクリプトが終了し、私のcwdでlsを実行します。
私が得るコマンドの周りに「」を追加すると、
[[email protected] ~/test]# ./test.sh 'cd /tmp && ls'
./test.sh: line 3: cd /tmp && ls: No such file or directory
「$@」は、実行中のコマンドに一重引用符を追加しようとしているようです。
「$@」の前にある一重引用符を削除できることを支持していますが、そうしたくありません。ヒントがありますか?それともbashで解決できますか?
答え1
/usr/bin/wrapper cd /tmp/ && ls
として解析されます(/usr/bin/wrapper cd /tmp/) && ls
。パラメータを正しく渡してもwrapper
理解できない&&
のはシェル構造です。このラッパースクリプトを正確に使用しているものはわかりませんが、bash -c
文字列を取得してbashにシェルに直接入力するように評価するように指示するthisに置き換えることができるようです。
* * * * * root bash -c "cd /tmp/ && ls"