이 명령을 실행하면 휴지통 디렉터리에 아무 것도 없으면 여전히 동일한 메시지가 출력됩니다. 휴지통에 파일이 없을 때 명령이 다른 메시지를 출력하도록 하려면 어떻게 해야 합니까?
#! /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
세 가지 예제는 모두 동일한 기능을 수행하지만 선호도에 따라 형식이 다릅니다.
실제로 명령을 실행하려면 해당 명령 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