Bash 使用 cat 找不到参数时打印帮助消息

Bash printing a help message when no arguments are found using cat

我还应该做的是,如果没有参数,我应该使用 cat 将 "help" 消息打印到标准错误设备。到目前为止,我可以理解并使用 echo 让它工作,但我的任务是只使用 cat 来做到这一点。当我尝试行 cat 2> (help message) 时,它转到一个新行,我可以在其中键入任何内容并导致脚本根本无法正常工作,唯一的转义是 ctrl + z。如何使用 cat 而不是 echo 来完成此操作?如果只使用 cat 可能的话,stderr 消息仍然被打印出来?

求助留言

Usage: concat FILE ...
Description: concatenates FILE(s) to standard output separating them with divider -----.

代码

#!/bin/bash
# concat script
if [[ $@ ]]
then
        for i in "$@"
        do
         cat "$i" && echo  "-----"
        done
exit 0
else
 cat 2> "Usage: concat FILE ...
Description: concatenates FILE(s) to standard output separating them with divider -----."
exit 1
fi

如果您想使用 cat 而不是 echo 将消息打印到 stderr,请尝试:

cat <<< "Usage: ..." >&2

cat用于从文件中输出数据。要从字符串输出数据,请使用 echo.

2> 用于将标准输出重定向到文件。要将 stdout 指向 stderr,请使用 >&2.

总计:

echo >&2 "Usage: concat FILE ...
Description: concatenates FILE(s) to standard output separating them with divider -----."

如果你真的想避免使用正确的工具来完成工作,你可以根据这里的文档重写它(创建一个 cat 可以读取的临时文件):

cat << EOF >&2
Usage: concat FILE ...
Description: concatenates FILE(s) to standard output separating them with divider -----.
EOF