如何在执行 shell 脚本 Linux 时关闭 echo

Aky*_*kyJ 6 linux bash shell echo

这是我正在做的一件简单的事情

 echo "please enter a command"
 read x
 $x
 checkexitstatus()
 {...}
Run Code Online (Sandbox Code Playgroud)

checkexit status 是在其他地方创建的 ifloop 只是为了检查退出状态

我想知道的是,当我运行 $x 时,它不会显示在屏幕上,我想知道是否可以不将输出重定向到文件

Ign*_*ams 8

不,这是不可能的。

$x &> /dev/null
Run Code Online (Sandbox Code Playgroud)


Idr*_*ann 6

您可以使用 Bash 重定向:

  • command 1> /.../path_to_file=> 将标准输出重定向到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
Run Code Online (Sandbox Code Playgroud)

在此示例中, 的输出command将存储在 中$var


Ash*_*kan 5

如果您只想关闭该echo命令而不关闭其他将其输出发送到 的命令stdout,如标题所示,您可以(这可能会破坏代码)为echo

alias echo=':'
Run Code Online (Sandbox Code Playgroud)

nowecho是 的别名noop。你可以unalias通过unalias echo.