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

세 가지 예제는 모두 동일한 기능을 수행하지만 선호도에 따라 형식이 다릅니다.

실제로 명령을 실행하려면 해당 명령 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

관련 정보