sshfs
接続の問題によって時々中断するリモートサーバーのインストールがあります。この問題を解決するために、ファイルがマウントされていることを確認するスクリプトを作成しました。そうでない場合は、電子メールを送信して再接続してくださいsshfs
。
その後の2番目の文が正しい構文を持っているかどうかはわかりませんelse
。これを区別するために括弧が必要か、それとも最初のステートメントを終了するためにセミコロンが必要かどうかはわかりませんか?コードは次のとおりです。
#!/bin/bash
file="/path/to/mount/.exists"
if [ -f "$file" ]
then
echo "$file found." > /dev/null 2>&1
else
/usr/sbin/sendmail -t [email protected] </etc/alert.txt
/bin/sh /etc/fix_mount.sh
fi
次に、else
最初に警告メッセージを送信して問題が発生したことを知らせ、2番目のbashスクリプトを実行して再接続しますsshfs
。私はそれがそれ自体で動作することを知っていますが、私の構文のために正しく動作しないよう/etc/fix_mount.sh
です。else
かっこ?セミコロン?準備しましたか?
答え1
あなたの文法は大丈夫です。
if/then/elseステートメントの構文にはif
、then
および(忘れないでください)というキーワードが含まれています。 、およびステートメントの後に許可されるコマンドは次のとおりです。else
fi
elif
then
else
elif
リストコマンド(1つ以上のコマンド)。
答え2
ビューには良く見えますが、次のように書いたことでしょう。
#!/bin/bash
check_file="/path/to/mount/.exists"
if [ ! -f "$check_file" ]; then
/usr/sbin/sendmail -t [email protected] </etc/alert.txt
/bin/sh /etc/fix_mount.sh
fi
echo
私はあなたがそれを指示しているので、最初の声明の理由がないと思います/dev/null
。
ファイルが次の場合、アクションを取る方が合理的です。いいえ展示する。したがって、論理NOT!
演算子です。
file
また、変数名としては使用しません。GNU/Linuxプログラム。
しかし、スクリプトに関する限りしなければならない働く