Добавление \ перед $ в параметре команды linux - PullRequest
0 голосов
/ 05 марта 2012

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

например.

prog_name.sh abc\$xyz

prog_name.sh содержит вызов программы oracle pro * C:

proc_exe $1

Обратная косая черта удаляется после первого вызова prog_name.sh, поэтому мне нужно вернуть его обратно в вызове proc_exe, чтобы $ был сохранен, а $xyz не оценивался. Это позволяет правильно передать abc$xyz в виде строки и использовать внутри proc_exe.

Ответы [ 4 ]

2 голосов
/ 05 марта 2012

Это должно нормально работать

prog_name.sh 'abc$xyz'

Обратите внимание, что вам не нужно повторять обратную косую черту, потому что знак доллара отсутствует в командной строке в proc_exe $1 - переменные не будут расширены более одного раза, так сказать

Вы можете использовать $1 в кавычках, если в нем есть пробелы:

proc_exe "$1"

таким образом, текст параметра прибудет в proc_exe как единственный параметр

2 голосов
/ 05 марта 2012

В зависимости от вашей реальной цели:

$ ./prog.sh 'abc\$xyz'    # receives: abc\$xyz

$ ./prog.sh "abc\$xyz"    # receives: abc$xyz
0 голосов
/ 05 марта 2012

Строки, передаваемые в Bash, обычно не должны беспокоиться об этом ... потому что они автоматически обрабатываются.

Пример: test.sh: #! / Bin / Баш

./test2.sh $1

test2.sh:

#!/bin/bash

echo "In Test 2 $1"

Пример вызова:

. / Test.sh 123 \ $ 456 = "В тесте 2 123 $ 456"

0 голосов
/ 05 марта 2012

Никогда не делай

proc_exe $1

или любая другая переменная без "" вокруг нее без необходимости.

Вместо этого используйте

proc_exe "$1"

и с тобой все будет в порядке.

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