Coquille 变量


Lors de la définition d'une variable, n'ajoutez pas de signe dollar ($, obligatoire pour les variables en langage PHP) dans le nom de la variable, tel que :

your_name="php.cn"

Notez qu'il ne peut pas y avoir d'espace entre le nom de la variable et le signe égal, qui peuvent être incompatibles avec Tous les langages de programmation que vous connaissez sont différents. Parallèlement, la dénomination des noms de variables doit suivre les règles suivantes :

  • Le premier caractère doit être une lettre (a-z, A-Z).

  • Il ne peut pas y avoir d'espaces au milieu et des traits de soulignement (_) peuvent être utilisés.

  • Les signes de ponctuation ne peuvent pas être utilisés.

  • Les mots-clés dans bash ne peuvent pas être utilisés (vous pouvez utiliser la commande help pour afficher les mots-clés réservés).

En plus de l'affectation directe explicite, vous pouvez également utiliser des instructions pour attribuer des valeurs aux variables, telles que :

for file in `ls /etc`

L'instruction ci-dessus bouclera le fichier noms dans le répertoire sous /etc.


Utiliser des variables

Pour utiliser une variable définie, ajoutez simplement un signe dollar devant le nom de la variable, tel que :

your_name="qinjx"
echo $your_name
echo ${your_name}

Accolades à l'extérieur de la variable nom C'est facultatif, vous pouvez l'ajouter ou non. Les accolades sont ajoutées pour aider l'interprète à identifier les limites des variables, comme dans la situation suivante :

for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

Si vous n'ajoutez pas d'accolades au nom. variable de compétence, écrivez echo "Je suis bon en $skillScript", l'interpréteur traitera $skillScript comme une variable (sa valeur est vide), et le résultat de l'exécution du code ne sera pas celui attendu.

Il est recommandé d'ajouter des accolades à toutes les variables. C'est une bonne habitude de programmation.

Les variables définies peuvent être redéfinies, telles que :

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

C'est légal à écrire, mais notez que vous ne pouvez pas écrire $your_name="alibaba" lors de l'attribution d'une valeur pour la deuxième fois. Ajoutez uniquement le signe dollar ($) lorsque vous spécifiez une variable.

Variable en lecture seule

Utilisez la commande readonly pour définir une variable comme variable en lecture seule. La valeur d'une variable en lecture seule ne peut pas être modifiée.

L'exemple suivant tente de modifier une variable en lecture seule, mais une erreur est signalée :

#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.php.cn"

Exécutez le script et les résultats sont les suivants :

/bin/sh: NAME: This variable is read only.

Supprimez le variable

Utilisez la commande unset Supprimer les variables. Syntaxe :

unset variable_name

Une variable ne peut plus être utilisée après sa suppression. La commande unset ne peut pas supprimer les variables en lecture seule.

Exemple

#!/bin/sh
myUrl="http://www.php.cn"
unset myUrl
echo $myUrl

Il n'y aura aucune sortie lors de l'exécution de l'exemple ci-dessus.

Type de variable

Lors de l'exécution du shell, trois variables existeront en même temps :

  • 1) Variables locales Les variables locales sont définies dans un script ou une commande, elles ne sont valides que dans l'instance de shell actuelle. Les programmes démarrés par d'autres shells ne peuvent pas accéder aux variables locales.

  • 2) Variables d'environnement Tous les programmes, y compris les programmes démarrés par le shell, peuvent accéder aux variables d'environnement. Certains programmes nécessitent des variables d'environnement pour assurer leur fonctionnement normal. Les scripts Shell peuvent également définir des variables d'environnement si nécessaire.

  • 3) Variables Shell Les variables Shell sont des variables spéciales définies par le programme Shell. Certaines variables du shell sont des variables d'environnement et d'autres sont des variables locales. Ces variables assurent le fonctionnement normal du shell

    .

Shell String

String est le type de données le plus couramment utilisé et le plus utile dans la programmation shell (à l'exception des nombres et des chaînes, il n'existe pas d'autres types faciles à utiliser ), la chaîne peut utiliser des guillemets simples, des guillemets doubles ou aucun guillemet. La différence entre les guillemets simples et doubles est similaire à PHP.

Guillemets simples

str='this is a string'

Limitations des chaînes de guillemets simples :

  • Tous les caractères entre guillemets simples seront affichés tels quels et les variables dans les chaînes de guillemets simples ne sont pas valides

  •  ; Les guillemets simples ne peuvent pas apparaître dans les chaînes entre guillemets simples (pas même après avoir utilisé des caractères d'échappement pour les guillemets simples).

Guillemets doubles

your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"

Avantages des guillemets doubles :

  • Vous pouvez avoir des variables entre guillemets

  • Les caractères d'échappement peuvent apparaître entre guillemets doubles

Épisser les chaînes

your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

Obtenir la longueur de la chaîne

string="abcd"
echo ${#string} #输出 4

Extraire les sous-chaînes

L'exemple suivant intercepte 4 caractères à partir du caractère 2 de la chaîne :

string="php is a great site"
echo ${string:1:4} # 输出 unoo

Rechercher la sous-chaîne

Rechercher le caractère "i ou s" position :

string="php is a great company"
echo `expr index "$string" is`  # 输出 8

Remarque : "`" dans le script ci-dessus est un guillemet arrière, pas un simple guillemet "'", Ne vous méprenez pas .


Tableau Shell

bash prend en charge les tableaux unidimensionnels (ne prend pas en charge les tableaux multidimensionnels) et ne limite pas la taille du tableau.

Semblable au langage C, les indices des éléments du tableau sont numérotés à partir de 0. Pour obtenir des éléments dans un tableau, utilisez des indices. L'indice peut être un entier ou une expression arithmétique et sa valeur doit être supérieure ou égale à 0.

Définir un tableau

Dans Shell, les crochets sont utilisés pour représenter les tableaux et les éléments du tableau sont séparés par des symboles "espace". La forme générale de définition d'un tableau est :

数组名=(值1 值2 ... 值n)

Par exemple :

array_name=(value0 value1 value2 value3)

ou

array_name=(
value0
value1
value2
value3
)

Vous pouvez également définir chaque composant du tableau séparément :

array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

peut être omis. Les indices continus, et il n'y a pas de limite à la gamme d'indices.

Lecture d'un tableau

Le format général pour lire les valeurs des éléments du tableau est :

${数组名[下标]}

Par exemple :

valuen=${array_name[n]}

Utilisez le symbole @ pour obtenir tous les éléments du tableau Élément, par exemple :

echo ${array_name[@]}

Obtenir la longueur du tableau

La méthode pour obtenir la longueur du tableau est la même que la méthode pour obtenir la longueur de la chaîne, par exemple :

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

Commentaires Shell

Les lignes commençant par "#" sont des commentaires et seront ignorées par l'interprète.

Il n'y a pas de commentaires sur plusieurs lignes dans sh, vous pouvez uniquement ajouter un signe # à chaque ligne. Cela ne peut être que comme ceci :

#--------------------------------------------
# 这是一个注释
# author:php中文网
# site:www.php.cn
# slogan: php中文网
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
# 
#
##### 用户配置区 结束  #####

Que dois-je faire si pendant le processus de développement, je rencontre une grande section de code qui doit être temporairement commentée, puis décommentée après un certain temps ?

Il est trop laborieux d'ajouter un symbole # à chaque ligne. Vous pouvez mettre le code à commenter entre une paire d'accolades et le définir comme une fonction. S'il n'y a pas d'endroit pour appeler cette fonction, ce code ne sera pas exécuté, obtenant le même effet que les commentaires.