Как присвоить значение переменной в Терминале?

В терминале, как я могу установить новую переменную и присвоить ей значение? Допустим, я хочу сравнить два файла с длинными именами файлов, а затем выполнить некоторые другие операции. Из-за длинных имен файлов я хотел бы создать две переменные, назначить значение каждой переменной и использовать его в качестве заполнителя. Мне нужно что-то вроде следующего:

set var1 = 'long-file-name1'
set var2 = 'long-file-name2'
diff var1 var2
2
задан 21 November 2019 в 18:15

2 ответа

Вы можете сохранить имя файла в переменной в ударе просто, назначив его

, Например: variable=filename && variable2=filename2

Вы можете тогда diff эти два файла с помощью тех переменных как это diff $variable $variable2

NB:if у имен файлов есть места, лучше двойная кавычка и имена файлов и переменные особенно, выполняя операции с ними

3
ответ дан 2 December 2019 в 01:26

Псевдокодекс (или кодекс для некоторой другой раковины или языка программирования) в Вашем вопросе переводят на следующие команды Удара:

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.

9
ответ дан 2 December 2019 в 01:26

Другие вопросы по тегам:

Похожие вопросы: