2016-12-21 4 views
0

Не уверен, что заголовок является точным. Скажем, у меня есть переменная со строкой:Как напечатать значение переменной как литеральную строку

var=C:\Windows\file.exe 

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

C:\Windows\file.exe 

Но, конечно же, обычные способы печатать переменную не делать:

echo $var 
C:Windowsfile.exe 
echo "$var" 
C:Windowsfile.exe 
echo '$var' 
$var 

можно ли это сделать?

+0

Опять же, '' bash' или batch'? – Inian

+0

Bash, не против пример, это просто использование обратных косых черт. – NPS

+0

Знаете ли вы, что означает символ спины? – Jdamian

ответ

3

Проблема в том, что обратная косая черта используется оболочкой во время определения, а не когда вы позже оцениваете переменную. Вам нужно процитировать объявление, т. Е. Использовать любой механизм экранирования оболочки, чтобы избежать \.

Вот что вы делаете:

$ var=C:\Windows\file.exe 

$ echo "$var" 
C:Windowsfile.exe 

Вот что вам нужно:

$ var='C:\Windows\file.exe' 

$ echo "$var" 
C:\Windows\file.exe 
+0

Вау, я действительно знаю это, и я думал, что попробовал процитировать литерал. Очевидно нет. Спасибо в любом случае. – NPS

+2

Обратите внимание на конкретное использование одинарных кавычек. Внутри строки с двумя кавычками есть три управляющие последовательности, которые обрабатываются: '\\' ',' \ $ 'и \\. (Первый, чтобы разрешить буквенные обратные кавычки, не запустив подстановку команд, второй, чтобы разрешить литерал '$' без запуска расширения параметра, и последнее, чтобы вы могли указать литеральную обратную косую черту, не избегая следующего обратного хода или знака доллара.) – chepner

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