指定ファイルの最終行が空白行かどうかを判定するコマンド
- 標準出力をパイプして、 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 を見ればどこかに書いてあるのかもしれません。
さて、他にも参考になったページです。ありがとうございます!
以上です。