Latest web development tutorials

Shell? Variable

Variables Shell

Lorsque vous définissez une variable, le nom de la variable sans un signe de dollar ($, les variables de langage PHP nécessaires), tels que:

your_name="w3big.com"

Notez qu'il n'y a pas d'espace entre le nom de la variable et le signe égal, ce qui peut vous être familier et tous les langages de programmation ne sont pas les mêmes. Pendant ce temps, le nom de la variable doit suivre ces règles de nommage:

  • Le premier caractère doit être une lettre (az, AZ).
  • Pas d'espace, utilisez un trait de soulignement (_).
  • Vous ne pouvez pas utiliser la ponctuation.
  • Vous ne pouvez pas utiliser bash en mot-clé (commande help pour afficher les mots-clés réservés disponibles).

En plus explicitement l'affectation directe, vous pouvez également attribuer des valeurs aux variables avec des déclarations telles que:

for file in `ls /etc`

La déclaration ci-dessus le nom du fichier du répertoire / etc de la circulation.


Utilisation de variables

Utilisez une variable définie, tant que le nom de la variable précédé d'un signe de dollar, comme ceci:

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

Nom de la variable en dehors des accolades sont optionnelles, plus sans tout droit, ajouter des accolades pour aider à expliquer les variables d'identification de limites, comme le cas suivant:

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

Si vous ne donnez pas de variables ainsi que des accolades compétences, écrites echo "Je suis bon à $ skillScript", l'interprète sera mis $ skillScript comme une variable (sa valeur est vide), l'exécution de code ne sont pas le résultat que nous attendons la même chose de nouveau.

Informer toutes les variables accolades, il est une bonne pratique de programmation.

Les variables définies, peuvent être re-défini comme:

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

Ecrire est légal, mais il faut noter que, lorsque la deuxième affectation ne peut pas écrire votre_nom $ = "alibaba", utiliser une variable quand il est ajouté au signe de dollar ($).

Variables de lecture

Utilisez la commande des variables readonly peuvent être définies comme étant en lecture seule variable, la valeur des variables en lecture seule ne peuvent pas être modifiées.

Les exemples suivants tentent de modifier les variables en lecture seule, les résultats étant donnés:

#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.w3big.com"

Exécutez le script avec les résultats suivants:

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

Supprimer la variable

Utilisez la commande unset pour supprimer une variable. Syntaxe:

unset variable_name

Variable ne peut être réutilisé après avoir été enlevé. commande unset ne peut pas supprimer les variables en lecture seule.

Exemples

#!/bin/sh
myUrl="http://www.w3big.com"
unset myUrl
echo $myUrl

Des exemples de la mise en œuvre de ce qui précède n'a aucune sortie.

Types de variables

Lorsque vous exécutez le shell, il y aura trois paramètres simultanément:

  • 1) les variables locales Les variables locales définies dans le script ou la commande est uniquement valide dans l'instance de shell courant, un autre programme de démarrage du shell ne peut pas accéder à des variables locales.
  • 2) les variables environnementales de tous les programmes, y compris le programme shell commencé, peuvent accéder à des variables d'environnement, certaines applications nécessitent des variables d' environnement pour assurer leur fonctionnement normal. Si nécessaire, le script shell peut également définir des variables d'environnement.
  • 3) variables shell shell variable est une variable spéciale fixée par le programme shell. shell partie variable de la variable d'environnement, certains sont des variables locales pour assurer le fonctionnement normal de la coque

chaîne Shell

programmation shell String est des types de données les plus courantes et les plus utiles (sauf les nombres et les chaînes, manque également d'autres types de pratique), les chaînes peuvent être placées entre guillemets simples, les guillemets doubles peuvent également être utilisées, ou peuvent ne pas être entre guillemets. La différence entre guillemets simples et doubles avec PHP est similaire.

Les guillemets simples

str='this is a string'

Guillemets simples restrictions à cordes:

  • Tous les caractères entre guillemets simples sont sortis comme des guillemets simples dans la variable de chaîne est invalide;
  • cordes simples guillemets ne peuvent pas apparaître dans les guillemets simples (utiliser des guillemets simples après le caractère d'échappement, ni).

Les guillemets doubles

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

Double cite avantages:

  • Les guillemets doubles peuvent avoir variables
  • Les guillemets doubles peuvent apparaître caractère d'échappement

concaténation de chaîne

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

Obtenez longueur de la chaîne

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

Extrait substring

Les exemples suivants des deux premières chaînes de caractères commencent capturer quatre caractères:

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

Trouver substring

Trouver caractère position "i ou s":

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

Note: Le script ci - dessus "` "anti-citations plutôt que des guillemets simples" "Ne vous y trompez pas, oh.


tableau Shell

bash supporte réseau unidimensionnel (ne supporte pas les tableaux multidimensionnels), et ne définit pas la taille du tableau.

Comme pour le langage C, l'indice d'éléments du tableau de numéro 0 de démarrage. Obtient un ensemble d'éléments pour profiter de l'indice, l'indice peut être un entier ou une expression arithmétique dont la valeur doit être supérieure ou égale à 0.

Définir les tableaux

Dans le Shell, utilisez des parenthèses pour indiquer un tableau, les éléments du tableau avec les "espace" symboles séparés. La forme générale d'un tableau est défini comme suit:

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

Par exemple:

array_name=(value0 value1 value2 value3)

ou

array_name=(
value0
value1
value2
value3
)

Vous pouvez également définir séparément pour chaque composant de la matrice:

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

Vous ne pouvez pas utiliser un index continu, et il n'y a pas de limite dans la fourchette cible.

Lire tableau

Le format général est lu valeur de l'élément de tableau:

${数组名[下标]}

Par exemple:

valuen=${array_name[n]}

Utilisez le symbole @ peut obtenir un tableau de tous les éléments, tels que:

echo ${array_name[@]}

Obtenez longueur du tableau

Obtient un tableau de longueurs de longueur de chaîne et obtenir la même manière, par exemple:

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

Remarques Shell

Line avec "#" au début du commentaire, sera ignoré par l'interprète.

sh il n'y a pas de commentaires à plusieurs lignes, chaque ligne ne peut ajouter un signe #. Seulement comme ceci:

#--------------------------------------------
# 这是一个注释
# author:本教程
# site:www.w3big.com
# slogan:学的不仅是技术,更是梦想!
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
# 
#
##### 用户配置区 结束  #####

Si le processus de développement, rencontrent de gros morceaux de code doivent commenter temporairement après un certain temps et uncommented, comment le faire?

Chaque ligne ajouter un symbole # trop laborieux, vous pouvez mettre un peu de code pour être annotée avec une paire de accolades, définie comme une fonction, pas de place pour appeler cette fonction, ce code ne sera pas exécuté, et atteint comme annotations effet.