Shell腳本是什么-創(chuàng)新互聯(lián)

小編給大家分享一下Shell腳本是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了獨(dú)山子免費(fèi)建站歡迎大家使用!

前言 
   Shell Script,Shell腳本與Windows及Dos下的批處理相似,也就是用各類命令預(yù)先放入到一個(gè)文件中,方便一次性執(zhí)行的一個(gè)程序文件,主要是方便管理員進(jìn)行設(shè)置或者管理用的。但是它比Windows下的批處理更強(qiáng)大,比用其他編程程序編輯的程序效率更高,畢竟它使用了Linux/Unix下的命令。shell script是利用shell的功能所寫的一個(gè)程序,這個(gè)程序是使用純文本文件,將一些shell的語法與指令寫在里面,然后用正規(guī)表示法,管道命令以及數(shù)據(jù)流重導(dǎo)向等功能,以達(dá)到我們所想要的處理目的。
   更明白地來說,shell script就像早期dos年代的.bat,最簡單的功能就是將許多指令匯整寫一起,讓使用者很容易地就能夠一個(gè)操作執(zhí)行多個(gè)命令,而shell script更是提供了數(shù)組,循環(huán),條件以及邏輯判斷等重要功能,讓使用者可以直接以shell來寫程序,而不必使用類似C程序語言等傳統(tǒng)程序編寫的語法。

概念區(qū)別
   Shell和Shell腳本有什么區(qū)別?確切一點(diǎn)說,Shell就是一個(gè)命令行解釋器,它的作用就是遵循一定的語法將輸入的命令加以解釋并傳給系統(tǒng)。它為用戶提供了一個(gè)向Linux發(fā)送請(qǐng)求以便運(yùn)行程序的接口系統(tǒng)級(jí)程序,用戶可以用Shell來啟動(dòng)、掛起、停止甚至是編寫一些程序。 Shell本身是一個(gè)用C語言編寫的程序,它是用戶使用Linux的橋梁。Shell既是一種命令語言,又是一種程序設(shè)計(jì)語言(就是你所說的shell腳本)。作為命令語言,它互動(dòng)式地解釋和執(zhí)行用戶輸入的命令;作為程序設(shè)計(jì)語言,它定義了各種變量和參數(shù),并提供了許多在高階語言中才具有的控制結(jié)構(gòu),包括循環(huán)和分支。它雖然不是 Linux系統(tǒng)內(nèi)核的一部分,但它調(diào)用了系統(tǒng)內(nèi)核的大部分功能來執(zhí)行程序、創(chuàng)建文檔并以并行的方式協(xié)調(diào)各個(gè)程序的運(yùn)行。

一、Shell腳本的基本語法
1、編寫個(gè)簡單的shell腳本
[root@xj ~]# vim example.sh
#!/bin/bash
#This is to show waht a example looks like.
echo "our first example"
echo "we are currently in the following directroy"
pwd
echo "This directory contains the following files"
ls
[root@xj ~]# chmod +x example.sh   //給腳本賦予可執(zhí)行權(quán)限
[root@xj ~]# ./example.sh          //執(zhí)行運(yùn)行
2、創(chuàng)建和執(zhí)行shell腳本的基本步驟

二、Shell腳本的變量
1、什么是變量
   變量來源于數(shù)學(xué),是計(jì)算機(jī)語言中能儲(chǔ)存計(jì)算結(jié)果或能表示值抽象概念。變量可以通過變量名訪問。在指令式語言中,變量通常是可變的;但在純函數(shù)式語言(如Haskell)
中,變量可能是不可變(immutable)的。在一些語言中,變量可能被明確為是能表示可變狀態(tài)、具有存儲(chǔ)空間的抽象(如在Java和Visual Basic中);但另外一些語言可能使用其它概念(如C的對(duì)象)來指稱這種抽象,而不嚴(yán)格地定義“變量”的準(zhǔn)確外延。

2、Shell變量
Shell中變量是傳遞數(shù)據(jù)的一種方法。變量是用來代表每個(gè)值的符號(hào)名
Shell中有兩類變量:臨時(shí)變量和永久變量。
擴(kuò)展:
自定義環(huán)境變量
[root@xj ~]# mv example01.sh /etc/sysconfig/
[root@xj ~]# export PATH=/etc/sysconfig:$PATH
[root@xj ~]# echo $PATH
/etc/sysconfig:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
注:這種方式一旦終端關(guān)閉后,就會(huì)失效,要想修改永久生效,可以修改用戶目錄下.bashrc文件,在此文件的最后一行添加export PATH=/etc/sysconfig:$PATH保存退出。
[root@localhost ~]# source .bashrc
執(zhí)行.bashrc后不報(bào)錯(cuò),則表示成功!

用戶定義變量:由字母或下劃線打頭,由字母、數(shù)字或下劃線組成,區(qū)分大小寫并且大小寫字母意義不同。變量名長度沒有限制。
使用變量值時(shí),應(yīng)在變量名前加上“$”符號(hào)。
例如:
[root@xj ~]# 123=abc
bash: 123=abc: command not found…

變量賦值:變量=值,賦值號(hào)“=”兩邊不加空格,否則提示錯(cuò)誤。
[root@xj ~]# a = 1
bash: a: command not found…
正確方式如下:
[root@xj ~]# name=rm
[root@xj ~]# NAME=mk
[root@xj ~]# echo $NAME
mk
[root@xj ~]# echo $name
rm

3、變量的運(yùn)用
例:將一個(gè)命令的執(zhí)行結(jié)果賦給變量
[root@xj ~]# A=`date`
[root@xj ~]# echo $A
Tue Mar 8 21:12:45 CST 2016
[root@xj ~]# B=$(date)
[root@xj ~]# echo $B
Tue Mar 8 21:13:33 CST 2016

變量值的可傳遞性
[root@xj ~]# A=`date`
[root@xj ~]# C=$A
[root@xj ~]# echo $C
Tue Mar 8 21:12:45 CST 2016

可以利用變量和其它字符組成一個(gè)新的字符串
[root@xj ~]# MYDIR=/home/rm/
[root@xj ~]# echo $MYDIR
/home/rm/
[root@xj ~]# echo $MYDIRzhangsan
輸出內(nèi)容為空
[root@xj ~]# echo ${MYDIR}zhangsan
/home/rm/zhangsan

給變量賦值多個(gè)單詞:
[root@xj ~]# NAME="mk docker"
[root@xj ~]# echo $NAME
mk docker
[root@xj ~]# NAME="rm $NAME"
[root@xj ~]# echo $NAME
rm mk docker
[root@xj ~]# NAME='rm $NAME'
[root@xj ~]# echo $NAME
rm $NAME
單引號(hào)和雙引號(hào)的區(qū)別:單引號(hào)將變量之間的內(nèi)容原封不動(dòng)地指定給變量。雙引號(hào)取消了空格的作用,保留特殊符號(hào)的含義。

刪除變量:
[root@xj ~]# echo $NAME
rm $NAME
[root@xj ~]# unset NAME
[root@xj ~]# echo $NAME

4、Shell腳本中的位置變量與特殊變量
位置變量:Shell解釋執(zhí)行用戶的命令時(shí),將命令行的第一個(gè)字作為命令名,而其它字作為參數(shù)。由出現(xiàn)在命令行上的位置確定的參數(shù)稱為位置參數(shù)。 
位置變量:使用$N來表示
[root@xj ~]# vim b.sh
#!/bin/bash
echo "第一個(gè)目錄是$1"
echo "第二個(gè)目錄是$2"
[root@xj ~]# chmod +x b.sh
[root@xj ~]# ./b.sh /home/ /etc/
第一個(gè)目錄是/home/
第二個(gè)目錄是/etc/
$0 這個(gè)程序的文件名 example.sh
$n 這個(gè)程序的第n個(gè)參數(shù)值,n=1..N

特殊變量:
有些變量是一開始執(zhí)行Script腳本時(shí)就會(huì)設(shè)定,且不能被修改,但我們不叫它只讀的系統(tǒng)變量,而叫它特殊變量。這些變量當(dāng)一執(zhí)行程序時(shí)就有了,以下是一些等殊變量:
$*  這個(gè)程序的所有參數(shù)
$#  這個(gè)程序的參數(shù)個(gè)數(shù)
$$  這個(gè)程序的PID
$!  執(zhí)行上一個(gè)后臺(tái)程序的PID
$?  執(zhí)行上一個(gè)指令的返回值
[root@xj ~]# vim z.sh
#!/bin/bash
echo "$* 表示這個(gè)程序的所有參數(shù)"
echo "$# 表示這個(gè)程序參數(shù)的個(gè)數(shù)"
touch /root/a.txt
echo "$$ 表示這個(gè)程序的PID"
touch /root/b.txt &
echo "$! 表示上一個(gè)后臺(tái)指令的PID"
echo "$$ 表示程序的進(jìn)程PID"
[root@xj ~]# ./z.sh aaa bbb ccc
aaa bbb ccc 表示這個(gè)程序的所有參數(shù)
3 表示這個(gè)程序參數(shù)的個(gè)數(shù)
39839 表示這個(gè)程序的PID
39841 表示上一個(gè)后臺(tái)指令的PID
39839 表示程序的進(jìn)程PID

例:變量在shell中的使用
[root@xj ~]# vim z1.sh
#!/bin/bash
var1="abcd efg"
echo $var1
var2=1234
echo "The value of var2 is $var2"
echo $HOME
echo $PATH
echo $PWD
[root@xj ~]# chmod +x z1.sh
[root@xj ~]# ./z1.sh
abcd efg
The value of var2 is 1234
/root
/etc/sysconfig:/etc/sysconfig:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
/root

三、shell中的命令
1、Read命令的使用
作用:從鍵盤讀入數(shù)據(jù),賦給變量
[root@xj ~]# read a b c
1 22 33
[root@xj ~]# echo $a $b $c
1 22 33

read與參數(shù)-p -n -t結(jié)合使用
-p(提示語句) 
-n(字符個(gè)數(shù))
-t(等待時(shí)間) 
[root@xj ~]# read -p "請(qǐng)輸入你的準(zhǔn)考證號(hào): " ID
請(qǐng)輸入你的準(zhǔn)考證號(hào): 20160308
[root@xj ~]# echo $ID
20160308
[root@xj ~]# vim read.sh
#!/bin/bash
read -p "請(qǐng)輸入你的姓名:" NAME
read -p "請(qǐng)輸入你的年齡:" AGE
read -p "請(qǐng)輸入你的性別:" SEX
echo "你的基本信息如下:"
echo "姓名:$NAME"
echo "年齡:$AGE"
echo "性別:$SEX"
[root@xj ~]# chmod +x read.sh
[root@xj ~]# ./read.sh
請(qǐng)輸入你的姓名:孫悟空
請(qǐng)輸入你的年齡:500
請(qǐng)輸入你的性別:男
你的基本信息如下:
姓名:孫悟空
年齡:500
性別:男

2、expr命令的使用
作用:Shell變量的算術(shù)運(yùn)算:
§ expr命令:對(duì)整數(shù)型變量進(jìn)行算術(shù)運(yùn)算
語法:expr 表達(dá)式    //注意:運(yùn)算符之間要有空格
[root@xj ~]# expr 3 + 2
5
[root@xj ~]# expr 8 – 3
5
[root@xj ~]# expr 8 / 4
2
[root@xj ~]# expr 8 \* 4
32
[root@xj ~]# expr 8 % 3
2
注:%取余運(yùn)算

結(jié)合變量使用運(yùn)算符
[root@xj ~]# var1=16
[root@xj ~]# var2=4
[root@xj ~]# expr $var1 – $var2
12

3、算數(shù)運(yùn)算符在shell腳本中的使用
[root@xj ~]# vim expr.sh
#!/bin/bash
read -p "Please input the value of a " a
read -p "Please input the value of b " b
read -p "Please input the value of c " c
value1=`expr $a + $b + $c`
echo "The value of value1 is $value1"
value2=`expr $c / $b`
echo "The value of value2 is $value2"
value3=`expr $c \* $b`
echo "The value of value3 is $value3"
value4=`expr $a + $c / $b`
echo "The value of value4 is $value4"
[root@xj ~]# ./expr.sh
Please input the value of a 10
Please input the value of b 20
Please input the value of c 30
The value of value1 is 60
The value of value2 is 1
The value of value3 is 600
The value of value4 is 11

復(fù)雜運(yùn)算
[root@xj ~]# expr $(expr $(expr 5 + 11) / $var3) + 4
12

以上是“Shell腳本是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

本文題目:Shell腳本是什么-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.muchs.cn/article32/depcpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版用戶體驗(yàn)、ChatGPT、網(wǎng)站營銷、網(wǎng)頁設(shè)計(jì)公司網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)