Estou tentando entender as variáveis locais / de ambiente e exportar / definir comandos.
$ set FILEM="razrax"
$ echo $FILEM
$ FILEN="test"
$ echo $FILEN
test
Por favor, explique por que echo $FILEM
retorna uma string vazia
Você está confuso bash
com csh
.
Em bash
como em qualquer Bourne-como o escudo, set
é o comando para definir opções (definições de configuração shell gosto -f
, -C
, -o noclobber
...) e parâmetros posicionais ( $1
, $2
...).
set FILEM="razrax"
Define $1
para FILEM=razrax
.
$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax
A sintaxe para atribuição de variável em shells tipo Bourne é:
VAR=value
(não é permitido espaço nos dois lados =
).
ksh
e alguns outros shells tipo Bourne (mksh, pdksh, zsh) também podem atribuir variáveis de matriz com set
:
set -A array value1 value2
zsh
, bash
, yash
E versões mais recentes do ksh
uso essa sintaxe em vez disso:
array=(value1 value2)
Por outro lado, em csh
ou tcsh
, a sintaxe é:
set VAR = value
set array = (value1 value2)
(espaços ao redor =
opcional).
Em rc
/ es
conchas:
VAR = value
array = (value1 value2)
(espaços ao redor =
opcional).
set -C
define a-C
opção (igual aset -o noclobber
).set foo
atribuifoo
a$1
(e$#
é 1, ($2
,$3
não está definido se definido anteriormente)). Verifique o manual do seu shell para obter detalhes.