경로가 제공되지 않을 때 "cat" 명령이 중단되지 않도록 하려면 어떻게 해야 합니까?

경로가 제공되지 않을 때 "cat" 명령이 중단되지 않도록 하려면 어떻게 해야 합니까?


텍스트 파일의 내용을 반환하는 bash 스크립트를 얻고 싶습니다 .

#!/bin/bash
cat $1

문제는..파일 경로가 이 bash 스크립트에 입력되지 않은 경우...어떻게 자동으로 닫힐 것인가입니다.

일반 명령줄을 통해... cat 명령에 파일 경로가 지정되지 않으면 .. 중단되지 않습니다.

거의 뭔가를 기다리는 것 같은...

답변1

#!/bin/bash
if [[ "$#" -ne 1 ]]; then
    echo "Usage: $0 [INPUT FILE]" 1>&2
    exit 1
fi
cat "$1"

답변2

명령에 또 다른 문제가 있습니다. 파일 이름에 공백이 있으면 어떻게 됩니까?

#!/bin/bash
cat "$1"

인용하지 말아야 할 특별한 이유가 없다면 항상 인용하십시오. 그리고 cat ""그것은 멈추지 않을 것입니다. 대신 "해당 파일이나 디렉터리가 없습니다."와 같은 오류 메시지가 생성됩니다.

답변3

catSTDIN파일 이름을 제공하면 무시됩니다. 이 경우 연결하는 것이 효과적인 솔루션이 될 STDIN것 입니다./dev/null

$ cat test.sh
#!/bin/bash
cat $1 < /dev/null
$ ./test.sh test.sh
#!/bin/bash
cat $1 < /dev/null
$ ./test.sh
$

이 방법의 단점은 0파일 이름이 제공되지 않으면 반환된다는 것입니다. 이 문제를 해결할 수 있는 방법이 없습니다. 지정된 파일을 열지 못하면 여전히 실패가 반환됩니다.

답변4

파일이 존재하는 경우에만 파일 내용을 표시합니다.

#!/bin/bash
[ -f "$1" ] && cat "$1"

이 스크립트는 첫 번째 인수가 원하는 파일이라고 가정합니다.cat

관련 정보