真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

shell學(xué)習(xí)之編程基礎(chǔ)知識(shí)

有學(xué)過編程語言的同學(xué)們都能夠很快入手shell因?yàn)榛A(chǔ)的字符類型,循環(huán)語句與C語言也差不多。以下我們來了解以下新手基礎(chǔ):

十載的阜新網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整阜新建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“阜新網(wǎng)站設(shè)計(jì)”,“阜新網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

1.在學(xué)習(xí)循環(huán)語句之前先了解一些基礎(chǔ)的字符信息:

$0、$1、$2、$?、$*、$#

$0 代表sh程序自己,例如: sh auto_system_backup.sh ,那么這里的$0就是auto_system_backup.sh

    Usage: { $0 /boot /etc} 這是編程中的提示信息:得到的顯示結(jié)果是Usage: { auto_system_backup.sh /boot /etc} 

$1代表的是執(zhí)行腳本后面的第一個(gè)參數(shù),例如:sh auto_system_backup.sh  /ect/ /tmp/那么這里的$1就是/ect/ ,自然/tmp/ 是$2

    當(dāng)我們需要選擇性的執(zhí)行某些任務(wù)時(shí)$1等就會(huì)排上用場,例如:上面幾張博文中提到的選擇備份數(shù)據(jù)庫中就用到了$1

------------------------------------------------------------------------------------------------

if [ -z "$1" ];then

        echo -e "\033[32mUsage:\nPlease Enter DataBase that you will backup \n-------------------------------\n\nUsage: { $0 MySQL } \033[0m"

        exit

fi

-------------------------------------------------------------------------------------------------

$?表示以上命令執(zhí)行都沒有錯(cuò)誤,如果沒有就返回0,主要用在代碼中檢查錯(cuò)誤,如果有錯(cuò)就提示或者不再執(zhí)行下面的代碼

-------------------------------------------------------------------------------------------------

if [ $? -eq 0 ];then

        echo -e "\033[32mThe Mysql Backup $MYSQLDB Successfully!\033[0m"

else

        echo -e "\033[32mThe Mysql Backup $MYSQLDB Failed,Please check.\033[0m"

fi

----------------------------------------------------------------------------------------------------

$* 代表的是執(zhí)行腳本后面的所有參數(shù)

------------------------------------------------------------------------------

if [ -z "$*" ];then

        echo -e "\033[32mUsage:\nPlease Enter Your Backup Files or Directories\n-------------------------------\n\nUsage: { $0 /boot /etc} \033[0m"

        exit

fi

---------------------------------------------------------------------------------

$#表示的是執(zhí)行腳本后面的所有參數(shù)的個(gè)數(shù)

以下一個(gè)腳本var02.sh可以顯示以上的參數(shù)效果:

-----------------------------------------

#!/bin/bash

#define path variables

#by authors robin 2017

echo "#####################"

echo "The \$1 is $1"

echo "The \$2 is $2"

echo "The \$? is $?"

echo "The \$* is $*"

echo "The \$# is $#"

-----------------------------------------

執(zhí)行腳本:sh var02.sh abc edf 

結(jié)果如下:

#####################

The $1 is abc  

The $2 is edf  

The $? is 0       

The $* is abc edf

The $# is 2 

---------------------------------


2.接下來了解一些基礎(chǔ)的邏輯運(yùn)算符:

-f 判斷文件是否存在 eg: if [-f filename]  

-d 判斷目錄是否存在 eg: if [-d dir]

eq 等于      應(yīng)用于:整型比較

-ne 不等于   應(yīng)用于:整型比較

-lt 小于      應(yīng)用于:整型比較

-gt 大于      應(yīng)用于:整型比較

-le 小于或等于   應(yīng)用于:整型比較

-ge 大于或等于   應(yīng)用于:整型比較

-a 雙方都成立(and)    邏輯表達(dá)式 -a 邏輯表達(dá)式

-o 單方成立(or)          邏輯表達(dá)式 -o 邏輯表達(dá)式

-z 空字符串  :-z "$*" 這里的$*和$1都要以字符的形式出現(xiàn)

------------------------------------

在以上的一些腳本你們也可以看到它們的身影,再仔細(xì)看看他們是起了什么效果自然也就知道了。剩下的在以后腳本解析中大家自己去理解


3.循環(huán)語句:for if while 等

三個(gè)判斷語句都是編程中的基礎(chǔ)之基礎(chǔ),在邏輯運(yùn)算中也就是他們之間的互相嵌套來處理。以下給出幾個(gè)簡單的例子:

if語句:

一次判斷語句,判斷出[]中為0就執(zhí)行之后的語句

--------------------- if_files_exist00.sh-------------------

#!/bin/bash

#juge dir exist

#fome net  2017

if [ ! -d /home/test1 ];then 

        mkdir -p /home/test1

else

        echo "This DIR is exist ,Please exist....."

fi

-------------------------------------------

以上的代碼解釋:如果/home/test1這個(gè)目錄不存在我們就創(chuàng)建它如果存在就提示信息,結(jié)合上面的$1稍微修改一下它

------------------ if_files_exist01.sh------------------------

#!/bin/bash

#juge dir exist

#from net 2017

DIR=$1                        

if [ ! -d $1 ];then

        mkdir -p $1               

else

        echo "The dir $1 is exist ,Please exit....."

fi

---------------------------------------------------------------

sh if_files_exist01.sh /home/test02   --這里執(zhí)行該腳本就要手動(dòng)的添加參數(shù)了

在以上的腳本中我們還可以再加一個(gè)提示信息,提示用戶輸入?yún)?shù)。也就是判斷$1是否為空,這里我就不多寫了,自己結(jié)合前面的代碼修改吧!

elif語句:

-------------------輸入的分?jǐn)?shù)判斷優(yōu)劣-----------------------------

#!/bin/bash

#juge scores

#from net 2017

scores=$1

if [ -z $scores ];then

        echo "Usage:{$0 60|80.}"   

        exit

fi

if [[ $scores -gt 85 ]];then

        echo "very good!";

elif [[ $scores -gt 75 ]];then

        echo "good!";

elif [[ $scores -ge 60 ]];then

        echo "pass!";

else

        echo "no pass!";

fi

------------------------------------------------------

shell學(xué)習(xí)之編程基礎(chǔ)知識(shí)


for語句:

多次判斷,只要條件成立就一直循環(huán)處理

----------------以下的代碼是計(jì)算1-15相加的總和---------

#!/bin/bash

j=0

for i in `seq 1 15`

do

j=`expr $i + $j`   --這里相當(dāng)于C語言中j=i+j

done

echo $j

---------------------

while語句:

也是多次判斷直到條件不成立為止

------------------------------------

#!/bin/bash

i=0

while (( $i < 10))

do

echo "The number is $i"

((i++))

done

----------------------------

select語句:

這語句主要用于選取,并獲得選取的值,以下程序運(yùn)行選取的2那么就會(huì)獲得$i的值為數(shù)組中的第二個(gè)

語法結(jié)構(gòu):

select i in "1" "2" "3";

do

    代碼。。。。。。。

done

----------------------------------

#!/bin/bash

select i in "Centos" "Redhat" "ubuntu";

do

        echo "Select you use system:"$i;

done

--------------------------------------

shell學(xué)習(xí)之編程基礎(chǔ)知識(shí)

這個(gè)select語句大部分時(shí)候是結(jié)合case語句來處理問題


case語句:   在編寫大型自動(dòng)化腳本中占很重要的地位

---------------------------以下代碼主要是用于選擇性執(zhí)行程序代碼--------------

#!/bin/bash

#auto install LAMP

#from net 2017

case $1 in 

        Apache)

        echo "Wait install httpd server...."

        tar -jxvf httpd-2.2.27.tar.bz2;cd httpd-2.2.27

        ;;

        Mysql)

        echo "Wait install mysql server...."

        ;;

        PHP)

        echo "Wait install mysql server...."

        ;;

        *)

        echo -e "\033[32mUsage:{$0 Apache|Mysql|PHP|help} \033[0m"

        ;;

esac

----------------------------------------------------------------------------

我們看看執(zhí)行效果:

shell學(xué)習(xí)之編程基礎(chǔ)知識(shí)

很顯然在后面接了參數(shù)后就開始執(zhí)行在該模塊下的代碼,每個(gè)模塊下我們可以寫任何的shell代碼去執(zhí)行。在后期的大規(guī)模服務(wù)部署中完全可以將所有代碼揉在其中嘛。比如自動(dòng)安裝服務(wù)、配置服務(wù),數(shù)據(jù)庫備份、數(shù)據(jù)庫恢復(fù),目錄數(shù)據(jù)同步、版本升級等等。都可以但是為了不要弄的很復(fù)雜建議不要寫太多的功能在其中。以下結(jié)合case和select寫一個(gè)簡單的沒有具體執(zhí)行任務(wù)的小腳本:

--------------------------------auto_lamp_case01.sh---------------------------------------

#!/bin/bash

#auto install LAMP

#fom net 2017

PS3="Select your will exec Menu:"

select i in "Apache" "Mysql" "PHP"

do

case $i in 

        Apache)

        echo "Wait install httpd server...."

        tar -jxvf httpd-2.2.27.tar.bz2;cd httpd-2.2.27

        ;;

        Mysql)

        echo "Wait install mysql server...."

        ;;

        PHP)

        echo "Wait install mysql server...."

        ;;

        *)

        echo -e "\033[32mUsage:{$0 Apache|Mysql|PHP|help} \033[0m"

        ;;

esac

done

------------------------------------------------------------------------

由于在每個(gè)模塊下只有簡單的顯示代碼,我們可以在后期根據(jù)自己的需要將代碼完善,執(zhí)行效果如下

shell學(xué)習(xí)之編程基礎(chǔ)知識(shí)

很顯然這個(gè)代碼更智能一些,在執(zhí)行程序后可以提示更多選擇,在這個(gè)腳本上可以擴(kuò)展出很多東西從而實(shí)現(xiàn)更多的自動(dòng)化處理。


分享題目:shell學(xué)習(xí)之編程基礎(chǔ)知識(shí)
當(dāng)前地址:http://weahome.cn/article/gppdjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部