J'essaie de comprendre les variables locales / d'environnement et d'exporter / définir des commandes.
$ set FILEM="razrax"
$ echo $FILEM
$ FILEN="test"
$ echo $FILEN
test
Veuillez expliquer pourquoi echo $FILEM
renvoie une chaîne vide
Vous confondez bash
avec csh
.
Dans bash
comme dans toute Bourne shell-like, set
est la commande de réglage des options (paramètres de configuration shell comme -f
, -C
, -o noclobber
...) et des paramètres de position ( $1
, $2
...).
set FILEM="razrax"
Définit $1
sur FILEM=razrax
.
$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax
La syntaxe pour l'affectation des variables dans les shells de type Bourne est:
VAR=value
(aucun espace autorisé de chaque côté de =
).
ksh
et certains autres shells de type Bourne (mksh, pdksh, zsh) peuvent également affecter des variables de tableau avec set
cependant:
set -A array value1 value2
zsh
, bash
, yash
Et les versions plus récentes d' ksh
utiliser cette syntaxe à la place:
array=(value1 value2)
En revanche, dans csh
ou tcsh
, la syntaxe est:
set VAR = value
set array = (value1 value2)
(espaces autour en =
option).
Dans rc
/ es
coquilles:
VAR = value
array = (value1 value2)
(espaces autour en =
option).
set -C
définit l'-C
option (identique àset -o noclobber
).set foo
attribuefoo
à$1
(et$#
est 1, ($2
, ne$3
sont pas définis s'ils sont définis précédemment)). Consultez le manuel de votre coque pour plus de détails.