我多么希望它起作用。

if [ $debug = 0 ]; then
   silent=""
else
   silent='> /dev/null 2>&1'
fi

#some command
wget some.url $silent

因此,如果设置了 $debug,它将变为
wget some.url > /dev/null 2>&1

否则,如果 $debug 未设置为 1,则变为
wget some.url

将 ">/dev/null 2>&1"存储在变量中不起作用。我怎样才能做到这一点?

最佳答案

这可能是使用 shell 函数的好借口:

silent() {
    "$@" > /dev/null 2>&1
}

现在,您可以通过运行以下命令来使程序静音:
silent wget some.url

如果您只想有条件地使事情静音,那很容易:
silent() {
  if [[ $debug ]] ; then
    "$@"
  else
    "$@" &>/dev/null
  fi
}

10-06 03:37