使用shell脚本命令输出

问题描述:

我在写一个简单的shell脚本,它从一个命令获取输出并在另一个命令中使用它。使用shell脚本命令输出

app=$(./twiddle.sh -u $1 -p $2 query jboss.web.deployment:* | grep $3) 
doop=$(./twiddle.sh -u $1 -p $2 invoke jboss.system:MainDeployer $4 $app) 

++ ./twiddle.sh -u管理-p密码调用jboss.system:MainDeployer停止$ 'jboss.web.deployment:战争= worker.war,ID = 1518231766 \ R'

我在上面看到的命令,该应用程序是未来的价值:

$'jboss.web.deployment:war=worker.war,id=1518231766\r' 

但如果我这样做回声$应用程序,然后我没有看到引号和\ r追加,如何确保应用程序不带引号发送作为另一个命令的输入?我不知道问题出在哪里 - 当我在shell外执行命令时,我看不到这是输出。

感谢您的任何帮助。

的sed将很好地工作,为此:

sh -u $1 -p $2 query jboss.web.deployment:* | grep $3 | sed 's/\'//g' | sed 's/\r//g' 
+0

它通过这样做: app ='echo $ app | sed's/\ r // g'' – Anna 2010-08-25 12:29:39

+0

很高兴你有工作.... – ennuikiller 2010-08-25 13:00:44

+0

'grep模式| sed's/from/to/g''通常是不需要的,因为sed有一个内置的grep:'sed -ne'/ pattern/s/from/to/gp''通常会保存一个分支。而且sed甚至可以做几个替换节省另一个分支...... – Jens 2012-05-16 20:15:23

doop=$(./twiddle.sh -u $1 -p $2 invoke jboss.system:MainDeployer $4 "$app") 

如果您不希望内容被shell解释,那么应该使用带引号的echo。如果您不希望像'人物太解释,用printf:printf '%s' "$app"

+0

没有加上引号没有删除的问题。 – Anna 2010-08-25 11:22:21

+0

您是否尝试过使用printf做第二件事? 像这样: doop = $(./ twiddle.sh -u $ 1 -p $ 2 invoke jboss.system:MainDeployer $ 4“''printf'%s'”$ app“''”) – Lekensteyn 2010-08-25 11:32:58