这是我正在做的一个简单的东西
echo "please enter a command"
read x
$x
checkexitstatus()
{...}
checkexit
状态是一个在其他地方创建的if循环,用于检查退出状态。
我的问题是:当我运行$ x时,有没有办法不将其显示在屏幕上?我想知道是否可能在不将输出重定向到文件的情况下实现此目的。
$x &> /dev/null
/dev/null
之外的其他东西。 - Idriss Neumanncommand 1> /.../path_to_file
=> 将stdout重定向到path_to_file。command > /.../path_to_file
是上一个命令的快捷方式。
command 2> /.../path_to_file
=> 将stderr重定向到path_to_file同时将两个内容重定向到同一个输出: command >/.../path_to_file 2>&1
.
2>&1
意味着将2
(stderr)重定向到1
(stdout,并变成 path_to_file)。如果您不想检索命令的输出,可以将path_to_file
替换为/dev/null
。
另外,您也可以存储命令的输出:
$ var=$(command) # Recent shell like Bash or KSH
$ var=`command` # POSIX compliant
command
的输出将会被存储在$var
中。如果你只想关闭echo
命令而不是其他将其输出发送到stdout
的命令,正如标题所示,你可以可能(这可能会破坏代码)为echo
创建一个别名。
alias echo=':'
现在 echo
是 noop
的别名。你可以通过 unalias echo
取消它。
$x > /dev/null 2>&1
,而不是只用$x
。这个命令的意思是将$x
的输出重定向到空设备文件/dev/null
中,并将标准错误输出通道2也重定向到标准输出通道1中。 - devnull/dev/null
之外的其他东西。 - Idriss Neumann