Próbuję zrozumieć zmienne lokalne / środowiskowe i polecenia eksportowania / ustawiania.
$ set FILEM="razrax"
$ echo $FILEM
$ FILEN="test"
$ echo $FILEN
test
Proszę wyjaśnić, dlaczego echo $FILEM
zwraca pusty ciąg
Mylisz się bash
z csh
.
W bash
podobny w jakikolwiek podobny Bourne shell, set
jest polecenie do ustawionych opcji (ustawienia konfiguracyjne shell podoba -f
, -C
, -o noclobber
...) i parametrów pozycyjnych ( $1
, $2
...).
set FILEM="razrax"
Ustawia $1
na FILEM=razrax
.
$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax
Składnia przypisywania zmiennych w powłokach podobnych do Bourne'a jest następująca:
VAR=value
(brak miejsca po obu stronach =
).
ksh
i niektóre inne powłoki podobne do Bourne'a (mksh, pdksh, zsh) mogą również przypisywać zmienne tablicowe za pomocą set
:
set -A array value1 value2
zsh
, bash
, yash
I nowsze wersje ksh
użycia tej składni zamiast:
array=(value1 value2)
Natomiast w csh
lub tcsh
składnia jest następująca:
set VAR = value
set array = (value1 value2)
(spacje wokół =
opcjonalne).
W rc
/ es
shells:
VAR = value
array = (value1 value2)
(spacje wokół =
opcjonalne).
set -C
ustawia-C
opcję (tak samo jakset -o noclobber
).set foo
przypisujefoo
do$1
(i$#
jest 1 ($2
,$3
jest pusta, jeżeli określone wcześniej)). Szczegółowe informacje znajdziesz w instrukcji powłoki.