我只是想獲取一個 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
cat
STDIN
如果您為其提供文件名,則會忽略。在這種情況下,連接到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