Várias abordagens:
Uma função
#! /bin/sh -
[ "$#" -gt 0 ] && redir=true || redir=false
redir() if "$redir"; then "$@" > normal.cfg; else "$@"; fi
redir echo 8.8.8.8
Um alias:
#! /bin/sh -
[ -z "$BASH_VERSION" ] || shopt -s expand_aliases
[ "$#" -gt 0 ] && alias redir='>normal.cfg' || alias redir=
redir echo 8.8.8.8
(não funciona com posh
, o que desabilita aliases, ou se procura (com o comando .
) em implementações AT & T de ksh
).
Um descritor de arquivo dedicado:
#! /bin/sh -
[ "$#" -gt 0 ] && exec 3> normal.cfg || exec 3>&1
echo 8.8.8.8 >&3
(lembre-se de que além do ksh93, não muitos shells configuram o sinalizador close-on-exec nesse fd3, então você pode querer fechá-lo para os comandos executados manualmente)