当没有提供路径时,如何告诉“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

相关内容