![cat 到 stderr,同时读取文件末尾标记](https://linux22.com/image/62204/cat%20%E5%88%B0%20stderr%EF%BC%8C%E5%90%8C%E6%97%B6%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6%E6%9C%AB%E5%B0%BE%E6%A0%87%E8%AE%B0.png)
抛开是否使用输出的问题应该无论是否转到 stderr,如果您必须将下面的 cat 命令的输出重定向到 stderr,您会怎么做?
function usage {
cat << " EOF_USAGE"
usage: FrameworkBuildScript --clean-all --clean-sdk-only --build-in-externals --debug-only --release-only --resources-only
--clean-all Clean all libraries before building
--clean-sdk-only Clean SDK library before building
--build-in-externals Include all libraries in the SDK library
--debug-only Build only the debug SDK framework
--release-only Build only the release SDK framework
--resources-only Build only the SDK resource bundles
Example: $0 --clean --build-in-externals
EOF_USAGE
}
答案1
cat << EOF >&2
...
EOF
或者:
cat >&2 << EOF
...
EOF
或者:
>&2 cat << EOF
...
EOF
或者:
usage() {
cat << EOF
...
EOF
} >&2
function usage {
是ksh
语法。仅在 AT&T 实现中以ksh
这种方式定义的函数表现不同时才有意义。在其他 shell 中,受支持的非标准语法的行为与 Bourne/POSIXusage() {
语法相同。