例如
#!/bin/bash
INT=-5
if [[ "$INT" =~ ^-?[0-9]+$ ]]; then
echo "INT is an integer."
else
echo "INT is not an integer." >&2
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
当我删除“>&2”时。没有什么不同。为什么我需要添加“>&2”
区别在于:
echo "INT is an integer."
Run Code Online (Sandbox Code Playgroud)
写入标准输出,以及
echo "INT is not an integer." >&2
Run Code Online (Sandbox Code Playgroud)
写入标准错误。
在 Unix 世界中,stdout通常在一切正常时stderr使用,通常用于在出现问题时打印消息。
默认情况下,stdout并stderr都打印到屏幕上。主要区别在于>and|运算符stdout默认捕获,而不是stderr.
因此,如果您的脚本位于管道中间,INT is an integer.则将继续沿管道向下并INT is not an integer打印到您的屏幕而不是进入管道。