В терминале, как я могу установить новую переменную и присвоить ей значение? Допустим, я хочу сравнить два файла с длинными именами файлов, а затем выполнить некоторые другие операции. Из-за длинных имен файлов я хотел бы создать две переменные, назначить значение каждой переменной и использовать его в качестве заполнителя. Мне нужно что-то вроде следующего:
set var1 = 'long-file-name1'
set var2 = 'long-file-name2'
diff var1 var2
Вы можете сохранить имя файла в переменной в ударе просто, назначив его
, Например: variable=filename && variable2=filename2
Вы можете тогда diff
эти два файла с помощью тех переменных как это diff $variable $variable2
NB:if у имен файлов есть места, лучше двойная кавычка и имена файлов и переменные особенно, выполняя операции с ними
Псевдокодекс (или кодекс для некоторой другой раковины или языка программирования) в Вашем вопросе переводят на следующие команды Удара:
var1='long-file-name1'
var2='long-file-name2'
diff "$var1" "$var2"
синтаксис $var1
расширение параметра . Это заменяет переменную var1
ее стоимостью - в этом случае именем файла, сохраненным в нем. Неупомянутые спусковые механизмы расширения параметра слово, разделяющееся (также названный «разделение области») и globbing (также названный «расширение имени файла» и «расширение имени пути»). Обычно Вы не хотите, чтобы те дальнейшие расширения произошли. Кроме тех случаев, когда Вы конкретно знаете, Вы хотите их , Вы должны удостоверяться, что приложили все случаи расширения параметра в двойные кавычки . ( Одинарные кавычки еще более сильны - они предотвратили бы расширение параметра, также.)
, Который бежит эти diff
, команда с именем файла, сохраненным в var1
, прошла как свой первый аргумент командной строки, и имя файла, сохраненное в var2
, прошло как свой второй аргумент командной строки. Это заставляет diff
сравнивать содержание файлов , как Вы предназначаете, как это было бы, если Вы бежали:
diff 'long-file-name-1' 'long-file-name-2'
Вы заметите, что я не использовал эти export
команда. Поэтому, в этом случае, эти export
команда не ни необходима, ни соответствующая для того, что Вы делаете. Когда ценность переменной только должна быть расширена в Вашей раковине - а не полученный доступ программами, запущенными от Вашей раковины - тогда Вам не нужно к (и не должен), использование export
.
, Если у Вашей системы было странное diff
команда, которые читают имена файлов от переменных окружения, названных var1
и var2
вместо того, чтобы брать имена файлов в качестве аргументов командной строки, тогда Вы должны были бы экспортировать свои переменные. Но это не то, как diff
работы. Эти diff
командуют, не получает доступ - и ничего не знает о - Ваши переменные. Раковина расширяет их, чтобы произвести аргументы, которые она тогда передает к diff
.