Maison  >  Article  >  Opération et maintenance  >  Comment les scripts shell doivent-ils être utilisés ?

Comment les scripts shell doivent-ils être utilisés ?

PHP中文网
PHP中文网original
2017-06-21 14:17:353735parcourir

Le script Shell utilise la fonction d'interprétation des commandes de Shell pour analyser un fichier texte brut, puis exécuter ces fonctions. On peut également dire que le script Shell est une collection d'une série de commandes.
Shell peut être utilisé directement sur Win/Unix/Linux et peut appeler un grand nombre de fonctions internes du système pour interpréter et exécuter des programmes. Si vous maîtrisez les scripts Shell, cela nous facilitera l'utilisation de l'ordinateur. et gagnez beaucoup de temps.

Scénarios d'application Shell

Ce que Shell peut faire

  • Simplifier certaines commandes complexes (généralement, nous devrons peut-être soumettre le code github une fois là-bas il y a plusieurs étapes, mais elles peuvent être simplifiées en une seule étape à l'aide de Shell)

  • Vous pouvez écrire des scripts pour remplacer automatiquement le dernier SDK (bibliothèque) dans un projet

  • Emballage automatique, compilation, publication et autres fonctions

  • Nettoyer les dossiers vides sur le disque

  • En bref, vous peut essayer n'importe quel script live régulier

Ce que Shell ne peut pas faire

  • Lorsque des calculs précis sont requis

  • L'efficacité du langage est requise Lorsqu'elle est élevée

  • Lorsque certaines opérations réseau sont nécessaires

  • En bref, Shell peut développer rapidement un script pour simplifier le processus de développement, et ne peut pas être utilisé Langage alternatif de haut niveau


Comment fonctionne Shell

Shell peut être appelé un langage de script car il ne nécessite la compilation elle-même, mais est interprétée. Une fois que le compilateur l'a interprété, il l'a compilé et exécuté. Par rapport aux langages traditionnels, il y a un processus d'interprétation supplémentaire, donc l'efficacité sera légèrement pire que celle des langages traditionnels directement compilés.


Le script le plus simple :

#!/bin/bashecho "Hello World"

Ouvrez simplement l'outil d'édition de texte, modifiez-le comme ci-dessus, puis enregistrez-le sous test.sh

Exécuter le script :

1. cd 到该目录下2. chmod +x ./test.sh  #给脚本权限3. ./test.sh  #执行脚本

Rendu 1

De cette façon, nous Le premier et le plus simple script a été écrit. Nous pouvons maintenant essayer d'écrire des scripts complexes.


Variables dans Shell

myText="hello world"muNum=100

Ce qu'il faut noter ici, c'est qu'il ne peut pas y avoir d'espaces avant et après "=", et les règles de dénomination sont les mêmes que dans les autres langues.

Accéder aux variables

myText="hello world"muNum=100echo $myTextecho muNum

Lorsque vous souhaitez accéder aux variables, vous devez utiliser $, sinon la sortie sera du texte brut, comme le montre la figure ci-dessous .


Rendu 2

Quatre opérations arithmétiques dans Shell

Exemple de programme

#!/bin/bashecho "Hello World !"a=3b=5val=`expr $a + $b`echo "Total value : $val"val=`expr $a - $b`echo "Total value : $val"val=`expr $a \* $b`echo "Total value : $val"val=`expr $a / $b`echo "Total value : $val"

Ce qu'il faut noter ici, c'est que lors de la définition de variables, il ne peut pas y avoir d'espaces avant et après "=", mais lors de l'exécution de quatre opérations arithmétiques, il doit y avoir des espaces avant et après les symboles d'opération, la multiplication doivent être échappés.


Rendu 3.png

Autres opérateurs =, ==, !=,! , -o, -a

Exemple de programme

a=3b=5val=`expr $a / $b`echo "Total value : $val"val=`expr $a % $b`echo "Total value : $val"if [ $a == $b ]then
   echo "a is equal to b"fiif [ $a != $b ]then
   echo "a is not equal to b"fi

Rendu 4

Opérateurs relationnels

#!/bin/shExemple de programme

a=10b=20if [ $a -eq $b ]then
   echo "true"else
   echo "false"fiif [ $a -ne $b ]then
   echo "true"else
   echo "false"fiif [ $a -gt $b ]then
   echo "true"else
   echo "false"fiif [ $a -lt $b ]then
   echo "true"else
   echo "false"fiif [ $a -ge $b ]then
   echo "true"else
   echo "false"fiif [ $a -le $b ]then
   echo "true"else
   echo "false"fi

Rendu 5

字符串运算符





字符串

#!/bin/shmtext="hello"  #定义字符串
mtext2="world"mtext3=$mtext" "$mtext2  #字符串的拼接echo $mtext3  #输出字符串echo ${#mtext3}  #输出字符串长度echo ${mtext3:1:4}  #截取字符串

效果图6

数组

#!/bin/sharray=(1 2 3 4 5)  #定义数组
array2=(aa bb cc dd ee)  #定义数组
value=${array[3]}  #找到某一个下标的数,然后赋值echo $value  #打印
value2=${array2[3]}  #找到某一个下标的数,然后赋值echo $value2  #打印
length=${#array[*]}  #获取数组长度echo $length

效果图7

输出程序

echo

#!/bin/shecho "hello world"  echo hello world  

text="hello world"echo $textecho -e "hello \nworld"  #输出并且换行echo "hello world" > a.txt  #重定向到文件echo `date`  #输出当前系统时间

效果图8

printf

同c语言,就不过多介绍了


判断语句

  • if

  • if-else

  • if-elseIf

  • case

#!/bin/sha=10b=20if [ $a == $b ]then
   echo "true"fiif [ $a == $b ]then
   echo "true"else
   echo "false"fiif [ $a == $b ]then
   echo "a is equal to b"elif [ $a -gt $b ]then
   echo "a is greater than b"elif [ $a -lt $b ]then
   echo "a is less than b"else
   echo "None of the condition met"fi
效果图9

test命令

test $[num1] -eq $[num2]  #判断两个变量是否相等
test num1=num2  #判断两个数字是否相等

 

for循环
#!/bin/shfor i in {1..5}doecho $idonefor i in 5 6 7 8 9doecho $idonefor FILE in $HOME/.bash*do
   echo $FILEdone
<code class="bash"><span class="hljs-meta"><br/><img src="https://img.php.cn/upload/article/000/000/001/e287dce1bca30a9896dc8bd2ecb0e156-15.png" alt=""/></span></code>
效果10

while循环

#!/bin/shCOUNTER=0while [ $COUNTER -lt 5 ]doCOUNTER=`expr $COUNTER + 1`echo $COUNTERdoneecho '请输入。。。'echo 'ctrl + d 即可停止该程序'while read FILMdoecho "Yeah! great film the $FILM"done

以上是while循环的两种用法,第一种是比较常规的,执行循环,然后每次都把控制的数加1,就可以让while循环有退出的条件了。

第二种是用户从键盘数据,然后把用户输入的文字输出出来。


跳出循环

break  #跳出所有循环
break n  #跳出第n层f循环
continue  #跳出当前循环

 

函数

#!/bin/shsysout(){echo "hello world"}

sysout

定义一个没有返回值的函数,然后调用该函数

#!/bin/shtest(){

    aNum=3anotherNum=5return $(($aNum+$anotherNum))
}
test
result=$?echo $result

定义一个有返回值的函数,调用该函数,输出结果


效果图11
#!/bin/shtest(){echo $1  #接收第一个参数echo $2  #接收第二个参数echo $3  #接收第三个参数echo $#  #接收到参数的个数echo $*  #接收到的所有参数
}

test aa bb cc

定义了一个需要传递参数的函数


效果图12

重定向

$echo result > file  #将结果写入文件,结果不会在控制台展示,而是在文件中,覆盖写
$echo result >> file  #将结果写入文件,结果不会在控制台展示,而是在文件中,追加写echo input < file  #获取输入流

 


写一个自动输入命令的脚本

自动提交github仓库的脚本

#!/bin/bashecho "-------Begin-------"git add .
git commit -m $1echo $1git push origin masterecho "--------End--------"

 


效果图13

以上便是我对shell知识的总结,欢迎大家点心,评论,一起讨论~~

 脚本程序

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn