ファイルの転送を行うshell(bash)
普段使わないshellを使う、の2回目です。
scpでファイル転送を行うshellを書いてみたんですが、
scp実行時のエラーをログファイルに出力する方法について
ちょっと困ったのでその方法について記載したいと思います。
まずエラー出力をリダイレクトしようと考えました。
command > logfile コマンドの実行結果をファイルに出力する場合 command >> logfile コマンドの実行結果をファイルに追記する場合 command 1>logfile 2>&1 1が標準出力で2が標準エラー出力 標準出力をlogfileに、標準エラー出力を標準出力と同じ場所に出力
上記の方法だとscpでエラーとなった場合に思うように出力してくれない。
空のファイルになってしまう。
なのでこういう風にしてみました。
scp -rp ファイル名 ユーザ名@サーバ名:ディレクトリ if [ $? -eq 1 ]; then echo "Error "サーバ名 > ログファイル fi
$?は特殊変数と呼ばれるもので色々な使われ方をするようなのですが、今回のケースでは
他の言語でいうtry ~ catch exception eのeに当たる部分となるようです。
(非常にざっくりですが)