青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

shell編程筆記

腳本不是復雜的程序,它是按行解釋的,腳本的第一行總是以#!/bin/sh開始.
這行代碼通知書shell使用系統上的Bourne shell解析器.

shell語法
test 命令
1.條件測試
test命令用于測試字符串
,文件狀態和數字.

工作原理
test 命令最短的定義可能是評估一個表達式;如果條件為真,則返回一個 
0 值。如果表達式不為真,返回非0

test一般有兩種格式
:

test 條件表達式

[ 條件表達式 ]

使用方括號時
,要注意在條件兩邊加上空格.

文件運算符
利用這些運算符,您可以在程序中根據對文件類型的評估結果執行不同的操作:
-b file 如果文件為一個塊特殊文件,則為真
-c file 如果文件為一個字符特殊文件,則為真
-d file 如果文件為一個目錄,則為真
-e file 如果文件存在,則為真
-f file 如果文件為一個普通文件,則為真
-g file 如果設置了文件的 SGID 位,則為真
-G file 如果文件存在且歸該組所有,則為真
-k file 如果設置了文件的粘著位,則為真
-O file 如果文件存在并且歸該用戶所有,則為真
-p file 如果文件為一個命名管道,則為真
-r file 如果文件可讀,則為真
-s file 如果文件的長度不為零,則為真
-S file 如果文件為一個套接字特殊文件,則為真
-t fd    如果 fd 是一個與終端相連的打開的文件描述符(fd 默認為 1),則為真
-u file 如果設置了文件的 SUID 位,則為真
-w file 如果文件可寫,則為真
-x file 如果文件可執行,則為真

字符串比較運算符
如標題所示,這組函數比較字符串的值。您可以檢查它們是否存在、是否相同或者是否不同。
string 測試以判斷字符串是否不為空
-n string 測試以判斷字符串是否不為空;
-z string 測試以判斷字符串是否為空;
string1 
= string2 測試以判斷 string1 是否與 string2 相同
string1 
!= string2 測試以判斷 string1 是否與 string2 不同

整數比較運算符
正如字符串比較運算符驗證字符串相等或不同一樣,整數比較運算符對數字執行相同的功能。
如果變量的值匹配則表達式測試為真,如果不匹配,則為假。整數比較運算符不處理字符串(正如字符串運算符不處理數字一樣):
-eq    等于
-ge    大于或等于
-gt    大于
-le    小于或等于
-lt    小于
-ne    不等于
:
# [ 2 -gt 3 ]
# echo $?

1

# [ 2 -lt 3 ]
# echo $?

0

布爾運算符
布爾運算符在幾乎每種語言中的工作方式都相同 — 包括 shell 腳本。在 nutshell 中,它們檢查多個條件為真或為假,或者針對假的條件而不是真的條件采取操作。與 test 搭配使用的運算符有
:
!    條件非
-a    條件與
-o    條件或



控制結構
無論什么編程語言都離不開條件判斷。SHELL也不例外。
條件分支

if語句

語法1
:
if 條件表達式
    then    命令
fi

語法2
:
if 條件表達式; then
    
do something here
elif 條件表達式 then
    
do another thing here
else
    
do something else here
fi

使用if時
,必須將then部分放在新行,否則會報錯.
如果要不分行
,必須使用命令分隔符.
$ vi testsh.sh
#!/bin/sh
if
cat 111-tmp.txt | grep ting1
then
echo found
else
echo "no found"
fi

$ vi testsh.sh
#!/bin/sh
cat 111-tmp.txt | grep ting1
if [ $? -eq 0 ]
then
echo $?
echo found
else
echo $?
echo "no found"
fi

#!/bin/sh

#函數
gw()
{
echo "do function gw()"
return 0
}

if gw
then
        echo "run succeed"
        echo "run succeed"
else
        echo "run failed"
        echo "run failed"
fi

說明:
if 命令/函數 0為真,走then
if 多條指令,這些命令之間相當于“and”(與)



case語句
case命令可類比C語言的switch
/case語句,esac表示case語句塊的結束。
每個匹配分支可以有若干條命令,末尾必須以;;結束,執行時找到第一個匹配的分支并執行相應的命令,然后直接跳到esac之后,不需要像C語言一樣用break跳出。
:
#! /bin/sh
echo "Is it morning? Please answer yes or no."
read YES_OR_NO
case 
"$YES_OR_NO" in
yes
|y|Yes|YES)
  echo 
"Good Morning!";;
[nN]
*)
  echo 
"Good Afternoon!";;
*)
  echo 
"Sorry, $YES_OR_NO not recognized. Enter yes or no."
  
exit 1;;
esac
exit 0


for語句
for 變量名 in 列表
do
    命令1
    命令2
done

Shell腳本的for循環結構和C語言很不一樣,它類似php編程語言的foreach循環。例如:
#!/bin/sh
for FRUIT in apple banana pear; do
  echo 
"I like $FRUIT"
done

while/do/done
while的用法和C語言類似。比如一個驗證密碼的腳本:

#!/bin/sh
echo "Enter password:"
read TRY
while [ "$TRY" != "secret" ]; do
  echo 
"Sorry, try again"
  
read TRY
done


位置參數和特殊變量
$
0    相當于C語言main函數的argv[0]
$
1、$2    這些稱為位置參數(Positional Parameter),相當于C語言main函數的argv[1]、argv[2]
$
#    參數個數,不包括程序自身,相當于C語言main函數的argc-1
$@    表示參數列表"$1" "$2" ,例如可以用在for循環中的in后面。
$
?    上一條命令的Exit Status
$$    當前Shell的進程號

位置參數可以用shift命令左移。
比如shift 3表示原來的$4現在變成$
1,原來的$5現在變成$2等等,原來的$1、$2、$3丟棄,$0不移動。不帶參數的shift命令相當于shift 1


函數

和C語言類似,Shell中也有函數的概念,但是函數定義中沒有返回值也沒有參數列表。例如:

#!/bin/sh

foo(){ echo 
"Function foo is called";}
echo 
"-=start=-"
foo
echo 
"-=end=-"

注意函數體的左花括號{和后面的命令之間必須有空格或換行,如果將最后一條命令和右花括號}寫在同一行,命令末尾必須有;號。

在定義foo()函數時并不執行函數體中的命令,就像定義變量一樣,只是給foo這個名字一個定義,到后面調用foo函數的時候(注意Shell中的函數調用不寫括號)才執行函數體中的命令。Shell腳本中的函數必須先定義后調用,一般把函數定義都寫在腳本的前面,把函數調用和其它命令寫在腳本的最后(類似C語言中的main函數,這才是整個腳本實際開始執行命令的地方)。

Shell函數沒有參數列表并不表示不能傳參數,事實上,函數就像是迷你腳本,調用函數時可以傳任意個參數,在函數內同樣是用$
0、$1、$2等變量來提取參數,函數中的位置參數相當于函數的局部變量,改變這些變量并不會影響函數外面的$0、$1、$2等變量。函數中可以用return命令返回,如果return后面跟一個數字則表示函數的Exit Status。

until語句
  until循環執行一系列命令直至條件為真時停止。注意
,這里是直到條件是真時才停止
until格式為:
until 條件
  命令1
  

done


i
=0
until [ $i -gt 3 ]
do
    i
=`expr "$i" + 1`
    
#i=$(($i + 1))
    echo $i
done

posted on 2011-09-08 15:54 天下 閱讀(514) 評論(0)  編輯 收藏 引用 所屬分類: Linux使用Linux編程Linux Shell

<2019年6月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久之久亚州精品露出| 1024成人网色www| 中文亚洲视频在线| 一区二区三区精品| 99视频+国产日韩欧美| 亚洲视频高清| 久久精品国产久精国产一老狼| 久久精品国产亚洲高清剧情介绍| 久久精品中文| 欧美色欧美亚洲另类二区| 欧美午夜剧场| 狠狠色狠色综合曰曰| 亚洲三级网站| 亚洲欧美综合网| 裸体一区二区| 日韩亚洲综合在线| 久久xxxx| 欧美自拍丝袜亚洲| 亚洲黄色影片| 亚洲一区二区三区四区中文 | 亚洲美女免费精品视频在线观看| 亚洲一区二区毛片| 可以免费看不卡的av网站| 亚洲片在线资源| 中文欧美字幕免费| 久久综合伊人77777麻豆| 欧美午夜在线一二页| 精品av久久707| 亚洲专区在线视频| 麻豆精品国产91久久久久久| 日韩视频永久免费| 久久久激情视频| 国产精品推荐精品| 夜久久久久久| 欧美黄污视频| 久久精品人人| 国产精品第十页| 一本一本a久久| 亚洲成色777777在线观看影院| 午夜精品久久久久影视| 欧美日韩综合在线| 亚洲毛片视频| 欧美激情二区三区| 久久男人av资源网站| 国产日韩在线看片| 午夜影视日本亚洲欧洲精品| 日韩亚洲视频| 欧美天天影院| 亚洲天天影视| 在线午夜精品| 国产精品v片在线观看不卡| 欧美成人在线免费观看| 91久久精品国产91久久性色| 久久久99精品免费观看不卡| 翔田千里一区二区| 久久久夜夜夜| 香蕉成人久久| 国产视频亚洲精品| 欧美在线3区| 亚洲欧美成人综合| 国产精品高潮呻吟久久av无限| 一本到高清视频免费精品| 亚洲激情影院| 欧美日韩18| 亚洲综合视频1区| 亚洲素人一区二区| 国产精品视频免费观看| 亚洲在线观看视频| 亚洲免费一在线| 亚洲欧美成人综合| 欧美日韩在线精品一区二区三区| 欧美色大人视频| 亚洲精品视频在线观看网站| 亚洲国产一区二区三区在线播| 欧美xart系列高清| 99国产麻豆精品| 99热精品在线| 国产欧美日韩激情| 久久永久免费| 欧美成年网站| 一区二区三区国产在线观看| 一本色道久久精品| 亚洲综合大片69999| 国产在线成人| 亚洲第一级黄色片| 欧美日韩一卡二卡| 欧美制服丝袜| 久久久精品久久久久| 亚洲国产婷婷| 一本色道久久88亚洲综合88| 欧美 日韩 国产在线| 欧美激情一区二区| 午夜免费在线观看精品视频| 欧美在现视频| 亚洲美女在线一区| 亚洲一区欧美| 亚洲国产一区在线| 国产精品永久免费观看| 久久久久国产精品一区| 久久亚洲一区二区| 亚洲一级二级在线| 午夜精品免费视频| 亚洲欧洲精品一区二区精品久久久 | 影音欧美亚洲| 91久久精品一区| 国产欧美日韩精品a在线观看| 久久久久久久久久久久久9999| 欧美日韩国产色视频| 日韩一级成人av| 亚洲夜间福利| 亚洲精品国产精品国自产观看| 亚洲欧美综合| 一区二区三区精品在线| 久久久精品一区| 午夜精品久久久久久久99水蜜桃 | 嫩草影视亚洲| 国产亚洲精品久| 一本一本a久久| 91久久精品网| 久久久久国产精品午夜一区| 午夜精品久久久久久久久久久| 男人天堂欧美日韩| 老牛影视一区二区三区| 国产一区二区精品久久| 亚洲午夜久久久久久久久电影院 | 亚洲人妖在线| 性欧美1819sex性高清| 亚洲视频精选| 欧美精品国产精品| 欧美激情91| 一区免费视频| 欧美一区二区三区四区高清| 亚洲自拍偷拍视频| 欧美涩涩视频| 99视频在线精品国自产拍免费观看| 亚洲日本欧美日韩高观看| 久久人体大胆视频| 久久久噜噜噜久噜久久| 国产一区二区三区四区老人| 亚洲欧美日韩国产中文在线| 亚洲综合日韩在线| 国产欧美日韩精品专区| 亚洲欧美在线看| 久久久久欧美精品| 在线日韩av| 麻豆久久精品| 亚洲第一精品电影| 一区二区三区视频在线播放| 欧美三级网页| 中国亚洲黄色| 欧美在线观看一二区| 国产欧美日韩视频一区二区三区 | 亚洲黑丝在线| 欧美激情综合五月色丁香小说| 亚洲激情成人在线| 亚洲在线免费| 国内精品美女av在线播放| 久久这里只精品最新地址| 欧美gay视频| 亚洲免费电影在线| 欧美三级午夜理伦三级中文幕| 在线视频中文亚洲| 亚洲丁香婷深爱综合| 欧美国产在线观看| 一本久道久久综合婷婷鲸鱼| 午夜视频在线观看一区二区三区| 国产欧美精品日韩区二区麻豆天美| 欧美一区日本一区韩国一区| 免费久久99精品国产自在现线| 亚洲人体大胆视频| 欧美视频久久| 久久精品视频在线观看| 亚洲精品午夜精品| 久久精品在这里| 在线亚洲精品福利网址导航| 国产欧美日韩视频一区二区三区 | 国产欧美一区二区三区国产幕精品| 久久国产精品久久w女人spa| 亚洲国产精品久久久久秋霞不卡| 亚洲午夜国产成人av电影男同| 狠狠色丁香久久婷婷综合_中| 欧美激情在线| 久久精品72免费观看| 亚洲三级观看| 久久久久久亚洲综合影院红桃 | 老司机午夜精品视频在线观看| 亚洲精品一区二区三区不| 亚洲欧美三级在线| 日韩一级视频免费观看在线| 亚洲欧美日本国产专区一区| 亚洲成人在线免费| 国产精品美女久久久| 欧美二区不卡| 久久福利毛片| 亚洲天堂免费在线观看视频| 欧美大片一区二区| 久久久久国产精品人| 午夜国产一区| 亚洲视频一区二区在线观看| 亚洲国产精品va在看黑人|