Linux: imposta il comando per le variabili locali


9

Sto cercando di comprendere le variabili locali / ambientali e i comandi export / set.

$ set FILEM="razrax"
$ echo $FILEM

$ FILEN="test"
$ echo $FILEN
test

Spiegare perché echo $FILEMrestituisce una stringa vuota

Risposte:


21

Stai confondendo bashcon csh.

In bashcome in qualsiasi tipo Bourne shell, setè il comando per impostare impostazioni (impostazioni di configurazione guscio, come -f, -C, -o noclobber...) e parametri posizionali ( $1, $2...).

set FILEM="razrax"

Imposta $1su FILEM=razrax.

$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax

La sintassi per l'assegnazione delle variabili nelle shell tipo Bourne è:

VAR=value

(nessuno spazio consentito su entrambi i lati di =).

kshe alcune altre shell tipo Bourne (mksh, pdksh, zsh) possono anche assegnare variabili di array con set:

set -A array value1 value2

zsh, bash, yashE versioni più recenti di kshutilizzo questa sintassi invece:

array=(value1 value2)

Al contrario, in csho tcsh, la sintassi è:

set VAR = value
set array = (value1 value2)

(spazi intorno =facoltativi).

In rc/ esshells:

VAR = value
array = (value1 value2)

(spazi intorno =facoltativi).


Grazie per la bella risposta L'unica cosa che non capisco è quale sia la differenza tra le opzioni benweet e le variabili locali "set è il comando per impostare le opzioni"?
iJava,

@iJava, set -Cimposta l' -Copzione (uguale a set -o noclobber). set fooassegna fooa $1(ed $#è 1, ( $2, $3non sono impostati se precedentemente impostati)). Controlla il manuale della tua shell per i dettagli.
Stéphane Chazelas,

1
Non capisco quali sono le opzioni. Queste opzioni sono inviate a programmi come main (String [] args)? O cosa? Dove sono usati?
iJava,

1
@iJava, sono impostazioni che influenzano il comportamento della shell. Ancora una volta, RTFM
Stéphane Chazelas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.