ホームページ  >  記事  >  運用・保守  >  シェルスクリプトはどのように使用すればよいのでしょうか?

シェルスクリプトはどのように使用すればよいのでしょうか?

PHP中文网
PHP中文网オリジナル
2017-06-21 14:17:353735ブラウズ

シェルスクリプトは、シェルのコマンド解釈機能を使用して、プレーンテキストファイルを解析し、これらの関数を実行します。シェルスクリプトは、一連のコマンドの集合であるとも言えます。
シェルは win/Unix/Linux 上で直接使用でき、多数の内部システム関数を呼び出してプログラムを解釈して実行できます。シェル スクリプトに習熟していれば、コンピュータの操作と保存が容易になります。多くの時間。

Shell アプリケーションのシナリオ

Shell でできること

  • いくつかの複雑なコマンドを簡略化します (通常、Github コードを送信するには多くの手順が必要ですが、Shell を使用すると 1 つの手順に簡素化できます)

  • 次のことができますスクリプトは、プロジェクト内の最新の SDK (ライブラリ) の自動置き換えを自動的に実装します

  • 自動パッケージ化、コンパイル、パブリッシュおよびその他の機能

  • ディスク内の空のフォルダーをクリーンアップします

  • 通常のライブ スクリプトを試すことができます

Shell でできないこと

  • 正確な計算が必要な場合

  • 言語効率が必要な場合

  • ネットワーク操作が必要な場合

  • つまり、シェルはスクリプトを迅速に開発でき、開発プロセスを簡素化できますが、高級言語の置き換えには使用できません


シェルの仕組み

シェルはコンパイルする必要がないため、スクリプト言語と呼ぶことができます。ただし、コンパイルと実行には従来の言語よりも多くの解釈プロセスが必要となるため、従来の直接コンパイルされた言語よりも効率が若干劣ります。


最も単純なスクリプト:

#!/bin/bashecho "Hello World"

テキスト編集ツールを開いて上記のように編集し、test.shとして保存するだけです

スクリプトを実行します:

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

Rendering 1

このようにして、最初の最も単純なスクリプトを作成しました。次に、いくつかの複雑なスクリプトを作成してみましょう。


シェルの変数

myText="hello world"muNum=100

ここで注意する必要があるのは、「=」の前後にスペースを入れることはできず、命名ルールは他の言語と同じであることです。

変数へのアクセス

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

変数にアクセスしたい場合は、$ を使用する必要があります。そうしないと、次の図に示すように、出力はプレーン テキスト コンテンツになります。


レンダリング2

シェルで四則演算

サンプルプログラム

#!/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"

ここで注意が必要なのは、変数を定義する際に「=」の前後にスペースを入れてはいけないということです。ただし、四則演算を行う場合は演算記号の前後にスペースが必要で、乗算の場合はエスケープする必要があります。


レンダリング 3.png

その他の演算子 =、==、!=、! 、-o、-a

サンプルプログラム

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

レンダリング4

関係演算子

#!/bin/sh サンプルプログラム

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

レンダリング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知识的总结,欢迎大家点心,评论,一起讨论~~

 脚本程序

以上がシェルスクリプトはどのように使用すればよいのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。