if文を使用して出力メッセージを変更する方法

if文を使用して出力メッセージを変更する方法

このコマンドを実行すると、ごみ箱ディレクトリに何もない場合でも同じメッセージが出力されます。ごみ箱にファイルがない場合にコマンドに別のメッセージを出力させるにはどうすればよいですか?

            #! /bin/bash
            #! listwaste - Lists the names of all the files in your waste bin and their size
            #! Daniel Foster 23-11-2015

            echo "The files that are in the waste bin are:"

            ls -1 ~/bin/.waste/

私はこれが簡単でなければならないことを知っていますが、ちょうど始まったばかりなので、ifステートメントまたはそれに似たものを使用する必要があると思います。

あなたの助けに事前に感謝の言葉を伝えたいと思います。

答え1

変数に出力を割り当てることは、次のように異なる動作をします。

$ mkdir ~/bin/.waste
$ OUTPUT=$( ls -1 ~/bin/.waste )
$ if [[ -z "$OUTPUT" ]]; then echo no waste; else echo $OUTPUT; fi
no waste
$ touch ~/bin/.waste/blkasdjf
$ OUTPUT=$( ls -1 ~/bin/.waste )
$ if [[ -z "$OUTPUT" ]]; then echo no waste; else echo $OUTPUT; fi
blkasdjf
$ 

答え2

消息筋:

trash() { ls -1 ~/bin/.waste; }; [[ $(trash | wc -l) -eq 0 ]] && echo no waste || echo -e "waste:\n$(trash)"

より良い形式:

trash() { ls -1 ~/bin/.waste; }
[[ $(trash | wc -l) -eq 0 ]] && echo no waste || echo -e "waste:\n$(trash)"

ナードフォーマット:

#!/bin/bash

function trash() {
  ls -1 ~/bin/.waste
}

if [[ $(trash | wc -l) -eq 0 ]]; then
  echo 'There are no files in the waste bin.'
else
  echo 'The files that are in the waste bin are:'
  trash
fi

3つの例はすべて同じ機能を実行しますが、好みによってフォーマットが異なります。

実際にコマンドを実行するには、そのコマンドをlistwasteというスクリプトに入れてlistwaste実行可能にし、()そのchmod +xスクリプトを$PATHecho $PATH

答え3

file_count=$(ls -1 ~/bin/.waste | wc -l)
if [[ $file_count == 0 ]]; then
    echo "There are no files in the waste bin"
else
    echo "The files that are in the waste bin are:"
    ls -1 ~/bin/.waste
fi

関連情報