2009-05-29 4 views
0

Хорошо, у меня есть сценарий, который принимает несколько аргументов, запускает данные и затем выводит данные на другой сервер. Проблема заключается в том, что для запуска данных я должен взять один из аргументов, а затем запустить отчет, используя его, что очень неудобно (пример [3023.2 <> 1], [5111.3 $] = "5" и т. Д.).Смешивание одно и двух котировок в Bash

Так что, если я собираюсь запустить команду, мне нужно поставить аргумент в одинарные кавычки, который затем заставит аргумент не втягиваться в него.

Таким образом, если бы я, чтобы запустить сценарий ...

arg1 = [5111.3$]="5" 

runjob specfile.spx '$arg1' 

Это не будет работать, но если бы я, чтобы запустить его в двойные кавычки, то есть хороший шанс, что аргумент, который получает пройденные будут иметь двойные кавычки. Любые идеи о том, как обойти это?

ответ

2

Используйте одинарные кавычки вокруг значения, когда вы установите его, а затем использовать двойные кавычки вокруг переменной, когда вы расширяете его:

$ arg1='[5111.3$]="5"' 
$ echo "$arg1" 
[5111.3$]="5" 
0

Цитата escapes. Попробуйте

[5111.3$]=\"5\" 

Усовершенствованный Scripting Guide имеет хороший раздел quoting.

Смежные вопросы