【发布时间】:2021-07-06 10:38:59
【问题描述】:
if $* >/dev/null 2>&1; then
echo Command \""$*"\" succeeded
else
echo Command \""$*"\" failed
fi
据我了解: 传递的参数在“黑洞”中输出。 然后stderr 被重定向到stdout。 但是为什么这会导致成功发出传递的命令时满足条件呢?
【问题讨论】:
if $* >/dev/null 2>&1; then
echo Command \""$*"\" succeeded
else
echo Command \""$*"\" failed
fi
据我了解: 传递的参数在“黑洞”中输出。 然后stderr 被重定向到stdout。 但是为什么这会导致成功发出传递的命令时满足条件呢?
【问题讨论】:
通过if $* >/dev/null 2>&1; then 命令:
一般语法是if COMMANDS; then。在你的情况下,COMMANDS 只是一个命令$* >/dev/null 2>&1。
此命令将输出重定向到空设备 (>/dev/null) 并将错误输出重定向到标准输出 (2>&1),因此也重定向到空设备。
通过扩展$* 检索命令本身。这个特殊变量扩展为 shell 脚本的参数。
所以本质上:命令及其参数是从$* 扩展的,并且输出以及错误输出重定向到空设备。
【讨论】: