当我运行此命令时,如果垃圾箱目录中没有任何内容,它仍然会输出相同的消息,当垃圾箱中没有文件时,我怎样才能让命令输出不同的消息?
#! /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
看到这些目录包含可以直接从 shell 调用的可执行文件。
答案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