<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kxbin
    成功留給有準備的人
    posts - 10,  comments - 35,  trackbacks - 0
    一、用戶登陸進入系統后的系統環境變量: 
    $HOME 使用者自己的目錄 
    $PATH 執行命令時所搜尋的目錄 
    $TZ 時區 
    $MAILCHECK 每隔多少秒檢查是否有新的信件 
    $PS1 在命令列時的提示號 
    $PS2 當命令尚未打完時,Shell 要求再輸入時的提示號 
    $MANPATH man 指令的搜尋路徑 

    二、特殊變量: 

    $0 這個程序的執行名字 
    $n 這個程序的第n個參數值,n=1..9 
    $* 這個程序的所有參數 
    $# 這個程序的參數個數 
    $$ 這個程序的PID 
    $! 執行上一個指令的PID 
    $? 執行上一個指令的返回值 

    三、shell中的變元: 
    * 任意字符串 
    ? 一個任意字符 
    [abc] a, b, c三者中之一 
    [a-n] 從a到n的任一字符 

    四、幾個特殊字符表示 

    \b 退回 
    \c 打印一行時沒有換行符 這個我們經常會用到 
    \f 換頁 
    \r 回車 
    \t 制表 
    \v 垂直制表 
    \\ 反斜線本身 

    五、判斷文件的屬性 
    格式:-操作符 filename 
    -e 文件存在返回0, 否則返回1 
    -r 文件可讀返回0,否則返回1
    -w 文件可寫返回0,否則返回1 
    -x 文件可執行返回0,否則返回1 
    -o 文件屬于用戶本人返回0, 否則返回1
    -z 文件長度為0返回0, 否則返回1
    -f 文件為普通文件返回0, 否則返回1 
    -d 文件為目錄文件時返回0, 否則返回1 

    六、測試字符串 

    字符串1 = 字符串2 當兩個字串相等時為真 
    字符串1 != 字符串2 當兩個字串不等時為真 
    -n 字符串      當字符串的長度大于0時為真 
    -z 字符串      當字符串的長度為0時為真 
    字符串       當串字符串為非空時為真 

    七、測試兩個整數關系 
    數字1 -eq 數字2     兩數相等為真 
    數字1 -ne 數字2     兩數不等為真 
    數字1 -gt 數字2     數字1大于數字2為真 
    數字1 -ge 數字2     數字1大于等于數字2為真 
    數字1 -lt 數字2     數字1小于數字2為真 
    數字1 -le 數字2     數字1小于等于數字2為真 

    八、邏輯測試 
    -a         與 
    -o        或 
    !        非 

    介紹shell特殊字符的引用 
    =============================== 
    shell中的特殊字符有 

    1、$ 美元符 
    2、\ 反斜杠 
    3、` 反引號 
    4、" 雙引號 
    5、< ,>,*,?,[,] 

    下面我一一舉列說明 
    一、$符號 
    1、echo $? 顯示的是上一條指令退出狀態,上一條命令執行是否成功 
    2、echo "$?" 效果同上 
    3、echo '$?' 顯示的是$? 
    4、echo \$? 顯示的是$? 
    5、echo "\$?" 顯示的是$? 

      大家可能已經看出 $符號在雙引號中具有特殊意義 雙引號對$符號不起作用 
    而單引號可以將特殊字符的的特殊意義屏蔽掉,使其能顯示為字符本身,反斜 
    杠也可以將特殊字符的特殊含義屏蔽掉,使特殊字符失去特殊含義。 

    二、\ 反斜杠 
      反斜杠的作用是將特殊符號字符的特殊含義屏蔽掉,使其還是原字符 
    A=1234 
    echo \$A 顯示為$A 如果不加\將顯示為1234 
    echo \` 顯示為` 
    echo \" 顯示為雙引號 
    echo \\ 顯示為\ 

    三、` 反引號 
      反引號的功能是命令替換,將反引號中的字符串做為命令來執行,我們在用shell編程時經常用的到 將系統命令的執行結果賦給一個變量 

    A=`date` 
    echo $A 顯示的不是date而是當時的時間串 
    比如有一文件A的內容如下  
    ABCDEFG 
    1234456 
    abcdefg 

    B=`cat A|grep 234` # 檢索文件A中含有字符串234的行 
    echo $B 將顯示為1234456 
    echo "$B" 將顯示為什么? 
    echo "\$B" 將顯示為什么?讀者自己試試 

    四、" 雙引號 
      在系統中有些特殊字符,為避免引用這些特殊字符 往往用雙引號或單引號將這些特殊字符引起來,使其不具有特殊含義。 
      但有一部分特殊字符在引號中還是具有特殊含義,用雙引號引起來是不起作用的。本文中所列的前四個特殊字符在雙引號中還是特殊字符。為了使其不具有特殊含義一是用單引號引進來二是用\反斜線使其失去作用。 
    單引號與雙引號的區別:單引號引起的內容原樣輸出;雙引號引起的內容不會原樣輸出。
      比如我們想原樣輸出這些特殊字符 

    echo """ 
    echo "$" 
    echo "\" 
    echo "`" 
    以上不是你所期望的結果,因為雙引號對它們不起作用,你只能這樣才能輸出這些特殊字符的原形 
    echo '"' 
    echo '$' 
    echo '\' 
    echo '`' 
    或 
    echo "\"" 
    echo "\$" 
    echo "\\" 
    echo "\`" 
    將分別顯示為 " $ \ ` 
    五、其它特殊字符 
      大家注意到 除了前四個特殊字符外 我將其它的特殊字符都放在一塊,這是因為前四個特殊字符在雙引號中還是具有特殊含義,所以單獨拿出來講,除此以外的特殊字符如果你要輸出這些特殊字符的原形,你就可以用雙引號或單引號引起來使其失去特殊含義。 
    < ,>,*,?,[,]對shell有特殊含義 但你可以用雙引號引起來輸入這些原形 

      講了這么多大家是不是已經注意到所有的特殊字符在單引號中失去特殊含義,如果你要輸出特殊字符原形但又記不清那些特殊字符在雙引號中不能輸出原形,建議你干脆用單引號引起來。

    介紹條件測試語句 

    一、if 條件語句  
    格式: 
    if 條件表達式 
    then #當條件為真時執行以下語句 
    命令列表 
    else #為假時執行以下語句 
    命令列表 
    fi 

    if 語句也可以嵌套使用 

    if 條件表達式1 
    then 
    if 條件表達式2 
    then 
    命令列表 
    else 
    if 條件表達式3 
    then 
    命令列表 
    else 
    命令列表 
    fi 
    fi 
    else 
    命令列表 
    fi 

    你可以進行多層嵌套 一個if語句一定要跟一個fi 表示該層條件結束  否則會造成語法錯誤 
    結合前面講的 舉例如下: 
    這里先講一個條件語句中用到的命令test 表示測試test后面的條件是否為真 

    if test -f "$1" 
    then 
    lpr $1 
    else 
    if test -d "$1" 
    then 
    cd $1 
    lpr $1 
    else 
    echo "$1不是文件或目錄" 
    fi 
    fi 

    以上的例子還可以改成如下所示 

    if test -f "$1" 
    then 
    lpr $1 
    elif test -d "$1" #elif 同else if 
    then 
    (cd $1;lpr $1) 
    else 
    echo "$1不是文件或目錄" 
    fi

    以上的例子不知您是否看懂是什么意思嗎? 
    假如我們現在將這個例子保存為prfile 
    chmod +x prfile 
    執行剛才的程序 
    ./prfile aaa 

    這個例子是檢查你的輸入的參數是否是一個文件 如果是就打印 如果是一個目錄 先轉目錄再打印 如果即不是文件也不是目錄給出提示 

    二、多重條件測試語句case 
    格式: 
    case 字串 in 
    模式) 命令列表;; 
    模式) 命令列表;; 
    .... 
    esac 

    多重條件語句是以case 開始以esac結束 中間可以有多個條件列表 功能是測試字串和和里面的模式有沒有匹配的,有就執行里面的命令列表 模式也可以是*號 表示任意字串,每個模式里面的最后要以;;雙分號結束,否則會發生語法錯誤。 

    現舉例如下: 

    case $1 in 
    *.c) 
    cc $1 
    ;; 
    *.txt) 
    lpr $1 
    ;; 
    *) 
    echo "未知的類型" 
    esac 

    假如將以上內容保存在文件abc中 

    chmod +x abc 
    執行 ./abc a.c   將會對文件a.c進行編譯 
    執行 ./abc readme.txt 將會把文件通過打印機 
    假如我將以上內容改一下,你是否會知道它的執行結果? 

    case $1 in 
    *) 
    cc $1 
    ;; 
    *.txt) 
    lpr $1 
    ;; 
    *.c) 
    echo "未知的類型" 
    esac 

    介紹循環語句 

    一. while 循環 
    while 命令格式 

    while 條件表 
    do 
    命令表 
    done 

    執行過程 

    shell首先執行條件表,如果條件表的最后一條語句的退出狀態為零,則執行盾環體內的命令 
    表,執行完后,再檢查條件表,如果退出狀態為零將繼續執行,如此循環往復直到條件表的 
    最后一條語句的退出狀態非零. 退出狀態為零就是條件為真True. 

    舉例說明 假如shell文件的內容如下: 

    Sum=0 
    i=0 
    while true #true是系統的關鍵詞 表示真 
    do 
    i=`expr $i + 1` 
    Sum=`expr $Sum + $i` 
    if [ $i = "100" ] 
    then 
    break; 
    fi 
    done 
    echo $i $Sum 
    最后這個程序顯示的是 100 5050 
    這個程序的運算就是將1到100加起來 

    下面將這個程序再改動一下 


    Sum=0 
    i=0 
    while [ $i != "100" ] 
    do 
    i=`expr $i + 1` 
    Sum=`expr $Sum + $i` 
    done 
    echo $i $Sum 

    改動后的程序運算結果和上面是一樣 但程序比上面的要簡練 

    在這個循環中還可以以until做為測試條件 它正好與while測試的條件相反,也就是當條件為假時將繼續執行循環體內的語句,否則就退出循環體,下面還用這個例子. 


    Sum=0 
    i=0 
    until [ $i = "100" ] 
    do 
    i=`expr $i + 1` 
    Sum=`expr $Sum + $i` 
    done 
    echo $i $Sum 
    當i不等于100時循環 就是當條件為假時循環,否則就退出,而第一個例子是當i不等于100 
    時循環,也就是測試條件為真時循環. 

    二.for 循環 

    命令格式: 
    for 變量 in 名字列表 
    do 
    命令列表 
    done 

    這里的名字列表是一個由空格分隔的字符串列表,shell在執行for循環時每次依次從名字表 
    中取出一個字符串賦給循環變量作為變量的值. 
    在寫for語句時,也可以省略in 名字列表部分,這表示用當前的位置參數來代替這時的名 
    字列表. 
    下面舉個例子 
    比如在你的電腦中有兩個目錄,一個是aa,一個是bb在這兩個目錄中有5個相同的文件,但其 
    中一個目錄中的一個或多個文件剛剛修改過,現在我忘記剛才改的是那幾個文件 了,那么我編寫程序?程序如下: 

    for File in a1 a2 a3 a4 a5 
    do 
    diff aa/$File bb/$File 
    done 

    下面再舉一個不帶名字列表的例子 

    for File 
    do 
    echo $Filw 
    done 

    文件內容保存在a.sh中 并可執行 
    我們在執行這個shell程序時命令行如下: 
    a.sh a1 a2 a3 a4 a5 
    執行結果如下: 
    a1 
    a2 
    a3 
    a4 
    a5 
    大家從這個例子中可以看到命令行的參數被逐一讀入一次 
    三.循環控制語句 
    break 命令不執行當前循環體內break下面的語句從當前循環退出. 
    continue 命令是程序在本循體內忽略下面的語句,從循環頭開始執行. 

    一,命令組合:圓括號和花括號 
    shell中有兩種方法將命令組合在一起:圓括號和花括號.圓括號使shell創建一個子shell 
    來讀取并執行括起來的名命令.左括號和右括號不論出現在命令行中的什么位置,shell都會 
    認為它們具有特殊的組合意義的.只有用雙引號將它們括起來引用,才表示圓括號或花括號 
    的原義.例如: 

    echo a(b) 
    將出現語法上的錯誤,要想輸出a(b)字符串 只能括起來 
    echo "a(b)" 
    或echo a"("b")
    這樣才能被shell正確解釋. 
    利用組合命令有什么作用呢? 
    一,用圓括號組合命令 
    圓括號的組合命令可以創建子進程運行組合程序,建立子進程的功能是很有用的,因為 
    子shell在組合命令中的種種操作都不會影響到當前shell的各變量的值. 
    例如: 
    子進程在執行組合命令時改變了工作目錄,并在新的工作目錄下執行一系例命令,執行 
    完后它可以不必返回原工作目錄,因為子進程工作目錄的改變不會影響到當前工作目錄. 

    創建子進程后將當前的環境也同樣傳給子shell,當前shell中用export輸出到環境中的 
    各變量在子shell中同樣有效. 


    花括號也可以將命令組合在一起.左 右花括號只有作為一條命令的第一個字出現時, 
    shell才它們含有特殊含義. 
    與圓括號不同的是花括號并不創建子shell,只是由當前的shell來讀取并執行括起來的 
    命令.有時用戶希望使用一組命令的順序輸出作為另一組命令的輸入,此時用花括號是很方 
    便的. 
    不論是用圓括號不是花括號,退出狀態都是等于最后一條括起來的命令的退出狀態. 


    二,可以在當前shell中執行的命令 

    用戶在使用shell時一定要了解那些是可以在當前shell中執行的命令 那些不可以 
    可以在當前shell中執行的命令有: 

    break case cd continue 
    echo eval exec exit 
    export for if read 
    readonly return set shift 
    test times trap umask 
    until wait while 
    : {} 
    posted on 2012-04-12 15:39 kxbin 閱讀(1074) 評論(0)  編輯  收藏 所屬分類: Linux
    你恨一個人是因為你愛他;你喜歡一個人,是因為他身上有你沒有的;你討厭一個人是因為他身上有你有的東西;你經常在別人面前批評某人,其實潛意識中是想接近他。

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(5)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    J2EE

    java技術網站

    Linux

    平時常去的網站

    數據庫

    電影網站

    網站設計

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人黄软件网18免费下载成人黄18免费视频 | 最近免费中文字幕大全免费版视频 | 亚洲爆乳AAA无码专区| 99久久精品免费精品国产| 亚洲日韩国产一区二区三区| 国产成+人+综合+亚洲专| 免费人成毛片动漫在线播放| 免费a在线观看播放| 国产成人精品日本亚洲专区6| 乱淫片免费影院观看| 久久久久久影院久久久久免费精品国产小说| 日韩免费观看的一级毛片| 亚洲精品白色在线发布| 九九免费久久这里有精品23| 亚洲国产精品一区二区第一页免| 亚洲天然素人无码专区| 最近中文字幕大全免费视频 | 美女视频黄频a免费观看| 日韩毛片免费无码无毒视频观看| 亚洲色图国产精品| 9久热精品免费观看视频| 亚洲av区一区二区三| 亚洲人成无码网站久久99热国产| 羞羞视频免费网站日本| 黑人大战亚洲人精品一区| 国产精品亚洲а∨无码播放麻豆| 麻豆最新国产剧情AV原创免费| 亚洲人成电影福利在线播放| 最近2022中文字幕免费视频| 亚洲人成影院在线高清| 一级毛片免费不卡在线| 亚洲欧洲精品国产区| 性色av无码免费一区二区三区| 亚洲AV成人无码网站| 日本高清免费不卡在线| 麻豆一区二区三区蜜桃免费| 伊人婷婷综合缴情亚洲五月| 久久99精品国产免费观看| 亚洲中字慕日产2021| 91成年人免费视频| 91亚洲国产成人久久精品网址 |