91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell腳本編程簡介

發布時間:2020-06-12 22:54:44 來源:網絡 閱讀:539 作者:子曰星辰 欄目:開發技術

 

1.什么是shell

2. 還是hello world程序

3. shell中的變量

3.1 系統變量

3.2 用戶定義變量

3.2.1 用戶定義變量規則

3.2.3 shell如何使用變量

3.2.3 全局變量 vs 局部變量 

4. shell編程中的控制結構

4.1 條件判定

4.1.1 簡單條件判定

4.1.2 組合判定 

4.2  if - else

4.3 for

4.4 while

4.5 case

5. shell中的函數

5.1 函數聲明和定義

5.2 函數調用

6. shell腳本調試

6.1 萬能的echo

6.2  兩個命令

7. 參考資料及shell腳本下載 

<1>. 什么是shell 

shell扮演者操作系統內核和用戶的中間人的角色,用戶通過鍵入shell command,然后shell通過解析用戶輸入,然后將請求轉發給操作系統的內核進行處理。


shell腳本編程簡介 1. 一個系統可以存在多個shell,可以通過cat /etc/shells命令查看系統中安裝的shell,不同的shell可能支持的命令語法是不相同的。

shell腳本編程簡介 2. 可以通過echo $SHELL查看當前使用的shell 

<2>. 還是hello world程序 

首先使用vim編輯器(或者是linux下任意的文本編輯器)編寫文件helloshell.sh(沒有必要使用.sh后綴名):

 #!/bin/bash

echo "hello shell";

保存上面的文件,增加該文件的執行權限:

 xuqiang@ubuntu:~/shell$ sudo chmod +x ./helloshell.sh

運行該shell程序:

 xuqiang@ubuntu:~/shell$ ./helloshell.sh

hello shell

通過上面的程序沒有什么實際的含義,但是通過第一個shell程序了解shell程序的執行過程。 

<3>. shell中的變量 

3.1 系統變量

linnux下的shell腳本中的變量分為“系統變量”和“用戶自定義變量”,可以通過set命令查看那系統變量。

xuqiang@ubuntu:~/shell$ set

... 略去內容

xuqiang@ubuntu:~/shell$ echo $HOME

/home/xuqiang

3.2 用戶定義變量

shell中用戶可以自定義變量,shell中的變量是沒有數據類型的,shell將根據當前的環境自動進行轉化,例如:

msg="hello world" 

上面的語句定義變量msg,并設置初始值是為hello world。

 shell腳本編程簡介 Tip 1. 需要注意的是定義變量時,=兩邊是沒有空格的 

3.2.1  用戶定義變量規則

變量必須是以字母開頭,后跟字母或者是下劃線,變量的命名是大小寫敏感的,并且可以定義一個變量的值為NULL。

xuqiang@ubuntu:~/shell$ vech=

xuqiang@ubuntu:~/shell$ echo $vec

3.2.2  shell中如何使用變量

如果想要得到shell變量中存儲的值的話,需要在變量名前增加$符號,例如:

xuqiang@ubuntu:~/shell$ vech="value"

xuqiang@ubuntu:~/shell$ echo $vech # this will print the value of vech

value

xuqiang@ubuntu:~/shell$ echo vech # this will print the string "vech"

vech

3.2.3 全局變量 vs 局部變量 

默認在shell中編寫的變量全部是局部變量,如果重新打開console的話,那么這些變量將全部丟失,全局的變量可以寫在文件~/.bashrc文件。

<4>. 控制結構 

4.1 條件判定

在shell中條件判斷是通過test命令或者是[ ]實現, 判斷條件如下:

數學運算: 

a -eq b :a == b
a -ne b : a != b
a -lt b : a < b
a -le b : a <= b
a -gt b : a > b
a -ge b : a >= b

string比較:
string1 = string2
string1 != string2
string1 : string1 不是NULL,或者是沒有定義

4.2 組合判定 

邏輯運算符:

! : not

exp1 -a exp2 : a && b

exp1 -o exp2 : exp1 || exp2 

4.3 if-else結構:

shell腳本編程簡介

!/bin/sh#
# see whether arguments is positive
#
if [ $# -ne 1 ]
then
        
echo "$0 : you must give/supply one integers"
        
exit 1
fi

if test $1 -gt 0
then
        
echo "$1 number is postivie"
else
        
echo "$1 number is negative"
fi

shell腳本編程簡介


shell腳本編程簡介

#!/bin/sh                               

osch
=0

echo "1. unix(sun os)"
echo "2. linux(red hat)"
echo -n "select your os choice [1 or 2] ?"
read osch

if [ $osch -eq 1  ]
then
        
echo "you pick up unix"
else
        
#
        
# nested if
        
if [ $osch -eq 2 ]
        
then
                
echo "you pick up linux"
        
else
                
echo "what you donot like unix/linux"
        fi
fi

shell腳本編程簡介

 


shell腳本編程簡介

#!/bin/sh
#
# test the if .. elif .. else
#
if [ $1 -gt 0 ] ; then
        
echo "$1 is positive"
elif [ 
$1 -lt 0 ] ; then
        
echo "$1 is negative"
elif [ 
$1 -eq 0 ] ; then
        
echo "$1 is zero"
else
        
echo "$1 is not a number"
fi

shell腳本編程簡介

 4.4 for

shell腳本編程簡介

!/bin/sh

#
# test for
#

for i in 1 2 3 4 5
do
        
echo "welcome $i times"
done

shell腳本編程簡介

shell腳本編程簡介

#!/bin/bash

for (( i = 0; i <= 5; i++ ))
do
        
echo "welcome $i times"

done  

shell腳本編程簡介

shell腳本編程簡介 Tip 1. 注意程序中使用的shell腳本的類型


shell腳本編程簡介

#!/bin/bash

for(( i = 1; i <= 5; i++  ))
do
        
for(( j = 1; j <= 5; ++))
        
do
                
echo -n "$i"
        done

# print a new line
        
echo ""
done

shell腳本編程簡介

4.5 while

shell腳本編程簡介

#!/bin/bash

#
# test while loop
#

n
=$1
i
=0
while [ 
$i -le 10 ]
do
        
echo "$n * $i = `expr $i \* $n`"
        i
=`expr $+ 1`

done   

shell腳本編程簡介

4.6 case 

shell腳本編程簡介

#!/bin/bash

#
# script to test case statement
#
action
="update"
case 
$action in
        
"update")
                
echo "update the db"
                
;;
        
"select")
                
echo "select from db"
                
;;
        
"delete")
                
echo "delete from db"
                
;;
        *
)
                
echo "no action"
                
;;

esac  

shell腳本編程簡介

<5>. 函數 

5.1 函數聲明和定義

下面的程序中定義函數demo,向函數傳遞的所有參數表示為$*,第一個參數$1,第二個參數$2, 依次類推。

shell腳本編程簡介

#!/bin/bash

function demo
()
{
        
echo "all function args : $*"
        
echo "the first arg : $1"
        
echo "the second arg : $2"
        
echo "the third arg : $3"
}

# call the function

demo -f foo bar  

shell腳本編程簡介

5.2 函數調用(函數參數)

shell中向函數傳遞參數是通過直接在函數調用后面添加參數完成,在函數中,傳遞的參數通過$1得到。

<6>. 腳本調試 

6.1 萬能的echo

shell的腳本調試是比價惡心的,這里僅僅是提供一些常規性的調試方法,最簡單的就是使用echo函數打印出變量的值從而達到調試目的。

6.2 兩個命令

shell腳本執行可以通過./shell-filename.sh的形式執行,另外的一種形式是通過bash ./shell-filename.sh的形式執行,同時在執行腳本時,可以使用-v或者是-x參數打印程序執行信息。

-v:默認打印shell讀取的內容

-x:將命令“展開” 之后打印

例如對于下面的程序:

!/bin/sh

# for debug shell script
#
tot
=`expr $1 + $2`
echo $tot

如果使用-v選項,結果如下:

 xuqiang@ubuntu:~/shell$ sh -v ./debug.sh 2 5

#!/bin/sh

#

# for debug shell script

#

tot=`expr $1 + $2`

echo $tot

7

如果是使用-x選項的話,結果:

 xuqiang@ubuntu:~/shell$ sh -x ./debug.sh 2 5

+ expr 2 + 5

+ tot=7

+ echo 7

7

轉載地址:http://www.cnblogs.com/xuqiang/archive/2011/04/27/2031034.html

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新蔡县| 舟山市| 桑植县| 谢通门县| 游戏| 平江县| 休宁县| 辰溪县| 太和县| 嘉黎县| 苗栗市| 天峻县| 黑河市| 岑巩县| 宝山区| 绥宁县| 镇远县| 五家渠市| 余干县| 北碚区| 大同县| 炎陵县| 合水县| 淮滨县| 丽水市| 即墨市| 德州市| 望江县| 淳安县| 罗定市| 兴安盟| 上蔡县| 定结县| 高陵县| 洛扎县| 莎车县| 武冈市| 北辰区| 齐河县| 两当县| 东兴市|