私は毎日のタスクを自動化することに興味があります。最近まで、私のスクリプトのすべての部分がスムーズに実行されていました。しかし今、私はzenityを実装しようとしていて、すべてが分断されました。今私はあなたが間違っていることを見ることができることを願っています。ポイントに来複雑なbash関数:正しい使い方ですか?
スヨン、:私はこのように見て、残酷なbashスクリプトを持っている:
#!/bin/bash
dosomething() {
# code
echo $1 >> ~/test.txt # For debugging
$1 & # ← Important line
# more code
}
main() {
# other code
dosomething "/usr/bin/rsync $rsync_options" # ← Call it "do_1"
dosomething "/usr/bin/find $findme_path -iname \"*.gpx\" -print0 | xargs -0 $other_command" # ← Call it "do_2"
# another code
}
(main | (zenity --progress $zenity_options || $still_another_command) &
何が起こる(はずです):メインの出力は、zenityを使う(プログレスバー)にパイプされます。 mainは実際にはコマンドを実行しませんが、実行するコマンドを含むパラメータでdosomethingを呼び出します。 dosomethingはコマンドを実行します。
実際に起こること:dosomethingの「エコー」部分は期待どおりに機能します。スクリプトを実行すると、do_1とdo_2のコマンドが〜/ test.txtに正しく表示されます。 (&に端末の〜/ test.txtの内容を貼り付けた場合、すべてのコマンドが期待通りの結果で実行されました)
"do_1"の "重要な行"は期待される結果で実行されます。しかし、 "do_2"の "重要な行"は効果がないようです。少なくとも、スクリプトを実行した後は$ other_commandの効果は見えません。
私はあなたが少なくとも私が意味するものを理解することができれば幸いです。あなたが私にここで何がうまくいかないのかのヒントをくれれば、あなたのことはとても親切だろう。
シバンを '#!/ bin/bash-x'に変更してもう一度実行して、出力を見てください! –