このコマンドを実行すると、ごみ箱ディレクトリに何もない場合でも同じメッセージが出力されます。ごみ箱にファイルがない場合にコマンドに別のメッセージを出力させるにはどうすればよいですか?
#! /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
スクリプトを$PATH
。echo $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