カテゴリー
Linux

【シェルスクリプト】指定ファイルの最終行が空白行かどうかを判定する

指定ファイルの最終行が空白行かどうかを判定するコマンド

  • 標準出力をパイプして、 test コマンドに渡そうと思ったができなかった。 tail -1 ~/.bash_profile | test -z; echo $?, tail -1 ~/.bash_profile | [ -z ]; echo $?, tail -1 ~/.bash_profile | [[ -z ]]; echo $? などではダメだった。
  • test コマンドには、引数が絶対に必要

以上を踏まえて、次のコードで実現できました。

[[ -z $(tail -1 ~/.bash_profile) ]]; echo $?

解説

  • [[ -z 文字列 ]]: 指定した文字列が0文字(何もない)状態であれば真を返す
  • $(): コマンドの実行結果を値にする
  • tail -1 ファイル: ファイルの最終行を標準出力する
  • ;: 1 行に複数のコマンドを書くための区切り
  • $?: 前のコマンドの結果

おわりに

シェルスクリプトなのだから、標準出力をパイプで受け取って test コマンドで評価できるはず!と思って数時間調べてしまいました><。

どうもできないようです。次のページで諦めがつきました。

今にして思うと、 man を見ればどこかに書いてあるのかもしれません。

さて、他にも参考になったページです。ありがとうございます!

以上です。

コメントを残す