以下の「do」にはどんな問題がありますか?
nohup while true; do ./mysync.sh; sleep 1800; done &
次の構文エラーが引き続き表示されます。
sh: 構文エラー: 'do' 予期しない
なしでコマンドを実行すると北面、うまく動作し、エラーは発生しません。
答え1
質問:shellは、「nohup while true」、「do ./mysync.sh」、「sleep 1800」、「done &」などの個々のコマンドを確認します。
ここで、シェルは予期しない「do」に関連する問題を発見しました。
解決策:小さなシェルスクリプトを引用または作成して、コマンドを1つの単位にグループ化する必要があります。ただnohupにユニットを渡してください。
(オプションA)次のようにコマンドを追加します。
nohup bash -c "while true; do ./mysync.sh; sleep 1800; done &"
(オプションB)コマンドを入力while true; do ./mysync.sh; sleep 1800; done &
してmywrapper.sh
実行します。
nohup mywrapper.sh
答え2
私は同じ問題があり、@Premのソリューションを試しました。権限拒否エラーが発生します。また、ファイル内の変数を使用してwhileループを介してnohupを実行しようとすると、二重引用符は機能しません。ファイルではなくシェル環境で変数を探します。後でエラーなしで単一引用符を使用して同じコマンドを実行しました。
nohup bash -c '同時にfvarを読む。 bash uniqReads.MT.sh $fvar 完了 < file.txt > file.log & '