我只是想获取一个 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