Попытка передать переменную bash с пробелами - PullRequest
0 голосов
/ 28 августа 2011

Может кто-нибудь помочь с этим запросом.В настоящее время пытаюсь передать переменную в xml с помощью sed.Это прекрасно работает только с текстом, однако не позволяет подобрать переменную внутри 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!)

Любые запросы, дайте мне знать ура

Обновление: По запросу имя переменной просто имя переменной= "$ 1"

Я также пытался удалить кавычки, просто наличие = $ 1, похоже, тоже не работает с этим, поэтому я предполагаю, что это потому, что при запуске скрипта (./script "здесь" "и т.д. "" и т.д. "Я использую кавычкитам, но не уверен, как обойти это.

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 голосов
/ 28 августа 2011

Это работает для меня:

variablename=$1
echo ${variablename}

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

например, с файлом create.xml как:

hello
<sProblemDesc></sProblemDesc>

эта команда:

./example.sh "here and here" foobar

производит:

here and here
hello
<sProblemDesc>here and here</sProblemDesc>
0 голосов
/ 28 августа 2011

Я думаю, что есть другая проблема, потому что этот простой тест работает:

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

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

Что ваш сценарий делает больше, чем это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...