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
我还应该做的是,如果没有参数,我应该使用 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