我正在编写一个简单的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 admin -p password invoke jboss.system:MainDeployer stop $'jboss.web.deployment:war = worker.war,id = 1518231766 \ r'
我在上面的命令中看到应用程序很有价值:
$'jboss.web.deployment:war=worker.war,id=1518231766\r'
但是如果我回复$ app然后我没有看到引号和\ r附加,我如何确保应用程序发送时没有引号作为另一个命令的输入?我不确定问题出在哪里 - 当我在shell之外执行命令时,我无法将其视为输出。
感谢您的帮助。
答案 0 :(得分:0)
doop=$(./twiddle.sh -u $1 -p $2 invoke jboss.system:MainDeployer $4 "$app")
如果您不希望shell解释内容,则应使用带引号的echo。如果您不希望解释'
之类的字符,请使用printf:printf '%s' "$app"
答案 1 :(得分:0)
sed将很好地为此工作:
sh -u $1 -p $2 query jboss.web.deployment:* | grep $3 | sed 's/\'//g' | sed 's/\r//g'