Я пытаюсь понять локальные переменные / переменные окружения и команды экспорта / установки.
$ set FILEM="razrax"
$ echo $FILEM
$ FILEN="test"
$ echo $FILEN
test
Пожалуйста, объясните, почему echo $FILEM
возвращает пустую строку
Вы путаете bash
с csh
.
В , bash
как и в любом Bourne-подобные оболочкам, set
это команда набора опций (параметры конфигурации оболочки нравятся -f
, -C
, -o noclobber
...) и позиционные параметры ( $1
, $2
...).
set FILEM="razrax"
Устанавливается $1
в FILEM=razrax
.
$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax
Синтаксис для назначения переменных в Bourne-подобных оболочках:
VAR=value
(не допускается места по обе стороны =
).
ksh
и некоторые другие Bourne-подобные оболочки (mksh, pdksh, zsh) также могут назначать переменные массива с помощью set
:
set -A array value1 value2
zsh
, bash
, yash
И новые версии ksh
использовать этот синтаксис вместо этого:
array=(value1 value2)
Напротив, в csh
или tcsh
, синтаксис:
set VAR = value
set array = (value1 value2)
(пробелы вокруг =
необязательно).
В rc
/ es
оболочки:
VAR = value
array = (value1 value2)
(пробелы вокруг =
необязательно).
set -C
устанавливает-C
параметр (так же, какset -o noclobber
).set foo
назначаетfoo
к$1
(и$#
равно 1, ($2
,$3
убираются если установлено ранее)). Проверьте руководство вашей оболочки для деталей.