Linux 如何更改bash脚本';s'echo'输出?
我的问题在于,我需要使用一个工具(如Linux 如何更改bash脚本';s'echo'输出?,linux,bash,shell,cs50,Linux,Bash,Shell,Cs50,我的问题在于,我需要使用一个工具(如sed或awk)来更改bash脚本的输出,该工具使用echo打印,该工具适用于大多数GNU/Linux发行版,如果可能的话,也适用于MacOS X 该脚本在CS50 IDE上可用,它被调用,其使用输出为: Usage: apache50 [start VHOST_DIR|restart|reload|stop|status] 我要打印的输出是: Usage: cli webserver [start VHOST_DIR|restart|reload|stop
sed
或awk
)来更改bash脚本的输出,该工具使用echo
打印,该工具适用于大多数GNU/Linux发行版,如果可能的话,也适用于MacOS X
该脚本在CS50 IDE上可用,它被调用,其使用输出为:
Usage: apache50 [start VHOST_DIR|restart|reload|stop|status]
我要打印的输出是:
Usage: cli webserver [start VHOST_DIR|restart|reload|stop|status]
要执行,我将指令作为参数传递给函数,然后尝试更改生成的输出:
optional_args(){
${@:2} | sed 's/apache50/cli webserver/g'
}
case $opt in:
webserver)
optional_args $opt "apache50" $@
break;
;;
esac
## output:
## Usage: apache50 [start VHOST_DIR|restart|reload|stop|status]
我的脚本没有打印想要的输出
以下是:
如果你知道如何做得更好,请给我一个建议 使用信息可能打印为标准错误,而
sed
仅处理标准输入(在管道的另一侧,是命令的标准输出)
您可以将标准错误重定向到标准输出:
${@:2} 2>&1 | sed 's/apache50/cli webserver/g'
但这与最初的意图相冲突(例如,显示错误消息和使用信息)
${@:2} 2>&1 | sed 's/apache50/cli webserver/g'