我只是想获取一个 bash 脚本
来返回文本文件的内容。
#!/bin/bash
cat $1
Run Code Online (Sandbox Code Playgroud)
问题是.. 当文件路径没有提供给这个 bash 脚本时......它甚至如何关闭自己。
因为通过常规命令行......如果没有文件路径被提供给 cat 命令......它不会挂断。
几乎就像在等待什么一样..
Cre*_*eek 35
#!/bin/bash
if [[ "$#" -ne 1 ]]; then
echo "Usage: $0 [INPUT FILE]" 1>&2
exit 1
fi
cat "$1"
Run Code Online (Sandbox Code Playgroud)
fro*_*utz 18
你的命令还有一个问题,如果文件名有空格怎么办?
#!/bin/bash
cat "$1"
Run Code Online (Sandbox Code Playgroud)
除非你有令人信服的理由不引用,否则总是引用。并且cat ""
不挂。相反,它会产生一条错误消息,例如“没有这样的文件或目录”。
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
$
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点是0
如果没有提供文件名就会返回。没办法。未能打开指定的文件仍将返回失败。