试图用空格传递bash变量

时间:2011-08-28 09:57:34

标签: xml bash variables sed

任何人都可以帮助解决此问题。目前正在尝试使用sed将变量传递给xml。这只适用于文本,但它不会在bash中获取变量,例如$ 1,$ 2等需要由用户输入。

EG:

sed 's/<\/sProblemDesc>/'"anew test"'&/' create.xml

成功输出  <sProblemDesc>anew test</sProblemDesc>

然而,当在新测试部件之间插入$ 1变量时,它要么带回变量的文字名而不是数据。

用户将按原样运行脚本

./script.sh "enter stuff here" "enter more stuff" "21313122131"

所以我需要知道如何让它与变量一起使用,同时还要考虑到我必须使用引号来分隔变量..(如果还有其他方法可以让我知道:D! )

任何疑问让我知道欢呼声

更新: 根据要求,变量名称只是variablename =“$ 1”

我已经尝试删除引号,因为只有= $ 1似乎也无法使用它,所以我猜它是因为在运行脚本时(./script“stuff here”“etc”“etc”我是在那里使用引号,但不知道如何绕过它。

EG

脚本

variablename=$1

sed 's/<\/sProblemDesc>/'"$variablename"'&/' create.xml

运行脚本

./script "variablename here" "etc etc" "etc"

XML是空白的,例如 <sProblemDesc></sProblemDesc>

另一个例子

echo sed 's/<\/sActionDesc>/'"$variablename"'&/' create.xml

返回以下未显示变量名称的空白

sed s/<\/sActionDesc>/&/ create.xml

再次干杯

wingZero

2 个答案:

答案 0 :(得分:0)

我认为还有其他问题,因为这个简单的测试有效:

$ cat test.sh 
#!/bin/bash
myvar=$1
echo "<sProblemDesc></sProblemDesc>" | sed 's/<\/sProblemDesc>/'"$myvar"'&/'

$ ./test.sh "enter stuff here"
<sProblemDesc>enter stuff here</sProblemDesc>

你的脚本做了什么呢?

答案 1 :(得分:0)

这对我有用:

variablename=$1
echo ${variablename}

sed 's/<\/sProblemDesc>/'"${variablename}"'&/' create.xml

e.g。使用create.xml文件:

hello
<sProblemDesc></sProblemDesc>

这个命令:

./example.sh "here and here" foobar

产生

here and here
hello
<sProblemDesc>here and here</sProblemDesc>