中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      linux shell編程變臉賦值和字符串操作

      時(shí)間:2024-08-04 15:43:43 Linux認(rèn)證 我要投稿
      • 相關(guān)推薦

      linux shell編程變臉賦值和字符串操作

        1.用戶定義的變量

        用戶定義的變量有字母數(shù)字及下劃線組成,并且變量名的第一個(gè)字符不能為數(shù)字.

        與其它UNIX名字一樣,變量名是大小寫敏感的.

        對于變量,用戶可按如下方式賦值:

        name = value

        在引用變量時(shí),需在前面加$符號(hào),用戶也可以在變量間進(jìn)行相互賦值,如:

        (前面的$是命令提示符)

        $ JOHN = john

        $ NAME = $JOHN

        $ echo Hello $NAME

        Hello john

        也可以用變量和其他字符組成新的字,這時(shí)可能需要把變量用{}括起,如:

        $ SAT = Satur

        $ echo Today is ${SAT}day

        Today is Saturday

        對于未賦值的變量,Bash以空值對待,用戶也可以用unset命令清除給變量

        賦的值.

        Bash中還可以使用數(shù)組變量,其賦值有兩種:

        (1) name[index] = value

        (2) name = (value1 ... valuen) 此時(shí)下標(biāo)從0開始

        數(shù)組下標(biāo)的范圍沒有任何限制,同時(shí)也不必使用連續(xù)的分量.

        Bash中關(guān)于變量的內(nèi)建命令有:

        (1) declare和typeset.兩者具有一樣的功能.其選項(xiàng)有:

        [-/ ]a 設(shè)置/撤消變量的數(shù)組屬性

        [-/ ]i 設(shè)置/撤消變量的整數(shù)屬性

        [-/ ]r 設(shè)置/撤消變量的只讀屬性

        [-/ ]x 設(shè)置/撤消變量的輸出屬性

        -p var 顯示變量屬性

        (2) export和local.

        export把變量輸出到環(huán)境中,用法為:

        export name

        export name = value

        這里需要簡單介紹一下export的作用:當(dāng)Bash shell執(zhí)行一個(gè)

        程序時(shí),將首先為該程序建立一個(gè)新的執(zhí)行環(huán)境,稱為子shell,

        在Bash Shell中變量都是局部的,即它們只是在創(chuàng)建它們的子

        Shell中是有意義的,使用export后,變量被設(shè)置為全局變量,這

        時(shí)可以被其它子Shell所識(shí)別

        local標(biāo)記變量為局部的(如只能被函數(shù)內(nèi)部使用),用法為:

        local name

        local name = value

        (3) readonly.

        指定變量為只讀,執(zhí)行后,改變量不能被再次賦值,用法為:

        readonly name

        2.位置變量或Shell參數(shù)

        Bash Shell在解釋用戶命令時(shí),將把命令行的第一個(gè)子作為命令,而其它字作為

        參數(shù)通過位置變量傳遞給程序.$1,...,$9分別代表第一,...,九個(gè)參數(shù).其中1-9

        是真正的參數(shù)名,"$"符只是用來標(biāo)識(shí)變量的替換.

        位置變量$0指命令對應(yīng)的可執(zhí)行名.

        其它的還有:

        $# 送給命令的參數(shù)個(gè)數(shù)

        $@ 所有的參數(shù),每個(gè)用雙括號(hào)括起

        $* 所有的參數(shù),用雙括號(hào)括起

        3.與Shell有關(guān)的變量

        (1) Shell自身設(shè)置的一些常用變量:

        LINENO 正在執(zhí)行的命令在腳本中的行號(hào)

        PWD 用戶當(dāng)前目錄的全名

        OLDPWD 最近一次執(zhí)行cd之前,用戶當(dāng)前目錄的全名

        PPID 父進(jìn)程ID

        $ 當(dāng)前進(jìn)程ID

        RANDOM 隨機(jī)數(shù)(范圍0-32767)

        SECONDS Bash Shell的運(yùn)行時(shí)間,單位是秒

        REPLY select和read命令使用,以后會(huì)講到

        OPTARG

        ORTIND 這兩個(gè)變量由getopt命令設(shè)置

        UID 當(dāng)前用戶的User ID

        _ 上一條命令使用的最后一個(gè)參數(shù)

        (2) 影響Shell行為的一些常用環(huán)境變量:

        PATH 命令搜索路徑,以冒號(hào)為分隔符.注意與DOS下不同的是,

        當(dāng)前目錄不在系統(tǒng)路徑里

        HOME 用戶home目錄的路徑名,是cd命令的默認(rèn)參數(shù)

        COLUMNS 定義了命令編輯模式下可使用命令行的長度

        EDITOR 默認(rèn)的行編輯器

        VISUAL 默認(rèn)的可視編輯器

        FCEDIT 命令fc使用的編輯器

        HISTFILE 命令歷史文件

        HISTSIZE 命令歷史文件中最多可包含的命令條數(shù)

        HISTFILESIZE 命令歷史文件中包含的最大行數(shù)

        IFS 定義SHELL使用的分隔符

        LOGNAME 用戶登錄名

        MAIL 指向一個(gè)需要SHELL監(jiān)視其修改時(shí)間的文件.當(dāng)該文件修改后,

        SHELL將發(fā)消息You hava mail給用戶

        MAILCHECK SHELL檢查MAIL文件的周期,單位是秒

        MAILPATH 功能與MAIL類似.但可以用一組文件,以冒號(hào)分隔,每個(gè)文件后

        可跟一個(gè)問號(hào)和一條發(fā)向用戶的消息

        SHELL SHELL的路徑名

        TERM 終端類型

        TMOUT SHELL自動(dòng)退出的時(shí)間,單位為秒,若設(shè)為0則禁止SHELL自動(dòng)退出

        PROMPT_COMMAND 指定在主命令提示符前應(yīng)執(zhí)行的命令

        PS1 主命令提示符

        PS2 二級(jí)命令提示符,命令執(zhí)行過程中要求輸入數(shù)據(jù)時(shí)用

        PS3 select的命令提示符

        PS4 調(diào)試命令提示符

        MANPATH 尋找手冊頁的路徑,以冒號(hào)分隔

        LD_LIBRARY_PATH 尋找?guī)斓穆窂?以冒號(hào)分隔

        bash變量賦值

        例子:經(jīng)常在configure腳本中,會(huì)出現(xiàn)以下類似的語句,都表示什么意思呢?

        if test -n "${ZSH_VERSION set}"; then

        ac_env_build_alias_set=${build_alias set}

        test "${ac_configure_args0 set}" != set

        答案及擴(kuò)展:

      變量賦值方式

      str 沒有賦值

      str 為空字符串

      str 為非空字符串

      備注

      var=${str-expr} var=expr var=$str var進(jìn)行設(shè)置
      var=${str expr} var=$str var=expr var進(jìn)行設(shè)置,varstr要不都取值,要不都不取值。雖然取值不同
      var=${str=expr} str=expr
      var=expr
      str 不變
      var=$str
      varstr進(jìn)行設(shè)置,

      var str保持一致

      var=${str?expr} expr 輸出至 stderr var=str var進(jìn)行設(shè)置
      var=${str:-expr} var=expr var=$str  
      var=${str: expr} var= var=expr  
      var=${str:=expr} str=expr
      var=expr
      str 不變
      var=$str
       
      var=${str:?expr} expr 輸出至 stderr

        Bash字符串的操作

        (一)字符串的替換

        (1)

        ${變量1/查找字符/替換字符}

        (說明一下,這個(gè)操作中除了第一個(gè)參數(shù)是變量外其它兩個(gè)都是字符;還有一點(diǎn)就是這個(gè)操作并不是把“變量1”中的字符替換了,詳見例子)

        例:

        str1=abcABCabc123ABC

        echo ${str1/bcA/aaa}#這里的abc和aaa都是字符串,而str1是變量,并且這個(gè)操作過后str1里的字符串長度不會(huì)減少,只是產(chǎn)生了一個(gè) 新的字串。

        (2)

        ${變量1/#查找字符/替換字符}

        (說明一下,這個(gè)操作上和面的是一樣的,只不過是從左邊開始匹配,并且必須從左邊第一個(gè)字符開始)

        例:

        echo ${str1/#bcA/aaa}#這個(gè)例子中并不會(huì)把bcA換成aaa因?yàn)閎不是左邊第一個(gè)開頭字符

        echo ${str1/#abc/aaa}#這樣才行

        (3)

        ${變量1/%查找字符/替換字符}

        (與(2)相反,是結(jié)尾最后一個(gè)字符要匹配才行)

        例:

        echo ${str1/:BC/aaa}#abcABCabc12aaa

        (3)

        ${變量1//查找字符/替換字符}

        全部替換

        (二)取子串

        (1)${變量1:位置}

        (說明一下,默認(rèn)是從左邊開始,如果“位置”為負(fù)數(shù),則是從右邊的第“位置”個(gè)字符開始,并且第一個(gè)位置為0;從“位置”開始取子串到最后)

        例:

        str1=abcABCabc123ABC

        echo ${str1:(-3)}#會(huì)輸出ABC

        (2)${變量1:開始位置:結(jié)束位置}

        (3)如果“變量1”為“*”或“@”,“位置”所表示的是第幾個(gè)參數(shù)。

        (三)字符串移動(dòng)

        (1)${字串#匹配字串}

        (說明一下,這個(gè)是從左邊第一個(gè)開始匹配,剝?nèi)プ疃?ldquo;匹配字串”)

        例:

        str1=abcABCabc123

        echo ${str1#a*c}#輸出ABCabc123

        (2)${字串##匹配字串}

        (說明一下,這個(gè)是從左邊第一個(gè)開始匹配,剝?nèi)プ铋L“匹配字串”)

        str1=abcABCabc123

        echo ${str1#a*c}#輸出123

        echo ${str1#b*c}#輸出abcABCabc123,因?yàn)闆]有從第一個(gè)開始匹配

        (3)${字串%匹配字串}

        (4)${字串%%匹配字串}

        (說明一下,這與上面的(1)(2)是正好相反的,是從最后一個(gè)開始匹配的)

        (四)字符串長度

        ${#字串}

        例:

        str=abcdefg

        echo ${#str}#輸出7

      【linux shell編程變臉賦值和字符串操作】相關(guān)文章:

      Linux shell常用命令匯總10-26

      Linux系統(tǒng)shell工具打印輸出08-16

      Linux Shell文本處理工具10-08

      Linux認(rèn)證操作技巧10-10

      Linux操作試題及答案08-01

      Linux中常用操作命令10-17

      Linux操作系統(tǒng)概述06-22

      數(shù)控車床編程與操作08-21

      《PHP字符串操作》收集整理08-08

      Linux認(rèn)證基礎(chǔ)知識(shí):linux操作系統(tǒng)目錄結(jié)構(gòu)07-10

      主站蜘蛛池模板: 禁止免费无码网站| 亚洲中文字幕第二十三页 | 国产精品一区二区AV不卡| 亚洲无码毛片免费视频在线观看 | 九九日本黄色精品视频| 人妻少妇太爽了嫩草影院| a级日本理论片免费观看 | 日本一区二区视频免费观看| 盘山县| 精品一区二区三区四区少妇| 男女视频在线观看一区二区三区 | 亚洲日本VA午夜在线电影| 海淀区| 绵阳市| 中文字幕乱码免费人妻av| 浪荡少妇一区二区三区| 国产精品亚洲一区二区v3d| 亚洲国产精品亚洲高清| 91中文人妻丝袜乱一区三区| 久久青草国产免费观看| 日本亚洲一级中文字幕| 亚洲AVAv电影AV天堂18禁| 91热爆在线精品| 日本一区二区三区观看视频| 国产成人AV乱码免费观看| 精品日本一区二区视频| 婷婷开心五月综合基地| 亚洲一区二区在线精品| 中文字幕日本丰满人妻| 国产在线h视频| 手机免费在线观看av网站| 晋城| 最大色网男人的av天堂| 一区二区三区放荡人妻| 1234.com麻豆性爰爱影| 中文精品久久久久中文| 一区二区三区国产97| AV无码专区亚洲AVL在线观看| 久久精品国产亚洲精品色婷婷| 亚洲av网一区天堂福利| 国产成人福利在线视频不卡|