Je m'interrogeais sur les parenthèses simples dans bash. Je sais qu'ils sont utilisés pour exécuter des commandes dans des sous-shells et qu'ils sont utilisés pour créer des tableaux, mais sont-ils utilisés pour autre chose ?
Une chose qui a attiré mon attention est que lorsque vous utilisez l'affectation de variable in, comme
var=(hello)
echo $var # hello
bash ne génère pas d'erreur ou quoi que ce soit, et la sortie est la même que si
var=hello
Ces deux définitions de variables sont-elles identiques ou y a-t-il une différence ?
Réponse acceptée :
Dans votre cas, parenthèse ()
sont utilisés comme définition de tableau, par exemple
a=(one two three) # array definition
echo "${a}" # print first element of array a
echo "${a[0]}" # print first element of array a
echo "${a[1]}" # print *second* element of array a
echo "${#a[@]}" # print number of elements in array a
Si vous mettez une seule variable dans un tableau, vous avez juste un tableau avec un seul élément.
Pour répondre à votre autre question, si les parenthèses sont également utilisées pour autre chose :il existe de nombreuses situations dans bash
qu'en combinaison avec d'autres caractères, ils peuvent être utilisés comme :
- substitution de commande :
$()
- substitution de processus :
<()
et>()
- sous-shell :
(command)
- évaluation arithmétique :
(())
- définition de la fonction :
fun () { echo x; }
- liste de modèles dans glob :
?()
,*()
,+()
,@()
,!()
(uniquement siextglob
est activé )