任何人都可以帮助解决此问题。目前正在尝试使用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
答案 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>