Linux: comando set para variáveis locais

7

Estou tentando entender 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

    
por iJava 21.04.2015 / 11:42

1 resposta

21

Você está confundindo bash com csh .

Em bash como em qualquer shell parecido com o Bourne, set é o comando para as opções definir (configurações de shell como -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 a atribuição de variáveis em shells semelhantes a Bourne é:

VAR=value

(nenhum espaço permitido em ambos os lados de = ).

ksh e alguns outros shells parecidos com Bourne (mksh, pdksh, zsh) também podem atribuir variáveis de array com set embora:

set -A array value1 value2

zsh , bash , yash e versões mais recentes de ksh usam esta sintaxe:

array=(value1 value2)

Por outro lado, em csh ou tcsh , a sintaxe é:

set VAR = value
set array = (value1 value2)

(espaços em torno de = opcional).

Em rc / es shells:

VAR = value
array = (value1 value2)

(espaços em torno de = opcional).

    
por 21.04.2015 / 12:13