nohup シェルループを設定しようとしたときに構文エラーが発生しました。

nohup シェルループを設定しようとしたときに構文エラーが発生しました。

以下の「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 & '

関連情報