當沒有提供路徑時,如何告訴「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

相關內容