Ответы:
Вы путаете 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
убираются если установлено ранее)). Проверьте руководство вашей оболочки для деталей.