日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

每天学一点儿shell:shell字符串变量的基本操作

發(fā)布時(shí)間:2025/3/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天学一点儿shell:shell字符串变量的基本操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • shell變量的定義
    • 定義變量
    • 變量命名規(guī)范
  • 變量的使用
  • 字符串的操作
    • 單引號(hào)、雙引號(hào)
    • 其他常見操作
      • 獲取字符串長度
      • 截取字符串
      • 獲取字符串位置

shell變量的定義

定義變量

  • 定義變量的時(shí)候直接使用變量名就行,不需要加$符號(hào)
  • 變量名和變量值、等號(hào)之間不能有空格。
  • 變量命名規(guī)范

  • 命名只能使用英文字母、數(shù)字、下劃線,首字母不能以數(shù)字開頭
  • 不能使用系統(tǒng)預(yù)留的關(guān)鍵字
  • 命令含義
    !保留字,邏輯非
    :不做任何事,只做參數(shù)展開
    .讀取文件并在shell中執(zhí)行它
    alias設(shè)置命令或命令行別名
    bg將作業(yè)置于后臺(tái)運(yùn)行
    bind將關(guān)鍵字序列與readline函數(shù)或宏捆綁
    break保留字,跳出for、while、until、select循環(huán)
    builtin調(diào)用命令的內(nèi)建命令格式,而禁用同名的函數(shù)。或者同名的擴(kuò)展命令
    case保留字,多重選擇
    cd切換當(dāng)前工作目錄
    command找出內(nèi)建和外部命令;尋找內(nèi)建命令而非同名函數(shù)
    continue保留字,到達(dá)下次for、while、until、select循環(huán)
    declare聲明變量定義變量屬性
    dirs顯示當(dāng)前存儲(chǔ)的列表
    disown將作業(yè)從列表中移除
    do保留字,for、while、until、select循環(huán)的一部分
    done保留字,for、while、until、select循環(huán)的一部分
    echo打印參數(shù)
    elif保留字,if結(jié)構(gòu)的一部分
    else保留字,if結(jié)構(gòu)的一部分
    enable開啟和關(guān)閉內(nèi)建命令
    esac保留字,case的一部分
    eval將參數(shù)作為命令再次處理一遍
    exec以特定程序取代shell或?yàn)閟hell改變I/O
    exit退出shell
    export將變量聲明為環(huán)境變量
    fc與歷史命令一起運(yùn)行
    fg將作業(yè)置于后臺(tái)運(yùn)行
    fi保留字,if循環(huán)的一部分
    for保留字,for循環(huán)的一部分
    function定義一個(gè)函數(shù)
    getops處理命令行選項(xiàng)
    hash記錄并指定命令的路徑名
    help顯示內(nèi)建命令的幫助信息
    history顯示歷史信息
    if保留字,if循環(huán)的一部分
    in保留字,case、for、select循環(huán)的一部分
    jobs顯示后臺(tái)運(yùn)行的作業(yè)
    kill向進(jìn)程傳送信號(hào)
    let使變量執(zhí)行算術(shù)運(yùn)算
    local定義局部變量
    logout從Shell中注銷
    popd從目錄棧中彈出目錄
    pushd將目錄壓入棧
    pwd顯示當(dāng)前工作目錄
    read從標(biāo)準(zhǔn)輸入中讀取一行
    readonly將變量定義為只讀
    return從函數(shù)或腳本返回
    select保留字,生成菜單
    set設(shè)置Shell選項(xiàng)
    shift變換命令行參數(shù)
    suspend終止Shell的執(zhí)行
    test評(píng)估條件表達(dá)式
    then保留字,if結(jié)構(gòu)的一部分
    time保留字,輸出統(tǒng)計(jì)出來的命令執(zhí)行時(shí)間,其輸出格式由TIMEFORMAT變量來控制
    times針對(duì)Shell及其子Shell,顯示用戶和系統(tǒng)CPU的時(shí)間和
    trap設(shè)置撲捉程序
    type確定命令的源
    typeset聲明變量,定義變量屬性,與declare等價(jià)
    ulimit設(shè)置和顯示進(jìn)程占用的資源限制
    umask設(shè)置和顯示文件權(quán)限碼
    unalias取消別名定義
    unset取消變量或函數(shù)定義
    until保留字,一種循環(huán)結(jié)構(gòu)
    wait等待后臺(tái)作業(yè)完成
    while保留字,一種循環(huán)結(jié)構(gòu)

    變量的使用

    使用變量只需要在前面加$即可

    [root@hadoop-master ~]# my_name="leo825" [root@hadoop-master ~]# echo $my_name leo825 [root@hadoop-master ~]# echo ${my_name} leo825

    花括號(hào)加不加都行,主要視情況而定,如果會(huì)引起編譯器歧義需要添加來區(qū)分變量邊界

    [root@hadoop-master ~]# echo "my name is ${my_name}" my name is leo825

    刪除變量

    [root@hadoop-master ~]# unset my_name [root@hadoop-master ~]# echo ${my_name}[root@hadoop-master ~]#

    字符串的操作

    單引號(hào)、雙引號(hào)

    [root@hadoop-master ~]# my_name="leo825" [root@hadoop-master ~]# echo '單引號(hào)輸出:${my_name}' 單引號(hào)輸出:${my_name} [root@hadoop-master ~]# echo "雙引號(hào)輸出:${my_name}" 雙引號(hào)輸出:leo825 [root@hadoop-master ~]# echo "雙引號(hào)輸出:\"${my_name}\"" 雙引號(hào)輸出:"leo825"

    根據(jù)上面的比較總結(jié)如下:

  • 單引號(hào)的任何字符串都會(huì)原樣輸出,所以不要用單引號(hào)放置變量
  • 雙引號(hào)可以放置變量,并且可以使用轉(zhuǎn)義字符
  • 其他常見操作

    獲取字符串長度

    [root@hadoop-master ~]# echo ${my_name} leo825 [root@hadoop-master ~]# echo ${#my_name} 6

    截取字符串

    截取格式,這個(gè)是從左邊開始計(jì)數(shù):

    ${string: start :length}

    其中,string 是要截取的字符串,start是起始位置(從左邊開始,從0開始計(jì)數(shù)),lenth是要截取的長度(省略的話表示直到字符串的末尾)

    [root@hadoop-master ~]# echo ${my_name} leo825 [root@hadoop-master ~]# echo ${my_name:1:2} eo [root@hadoop-master ~]# echo ${my_name:1} eo825

    截取格式,這個(gè)是從右邊開始計(jì)數(shù):

    ${string: 0-start :length}

    這種格式比上一種多了0-,這個(gè)是固定寫法,代表是從字符串右邊開始計(jì)數(shù)的。
    這種方式要注意兩點(diǎn)

  • 從左邊開始計(jì)數(shù)時(shí),起始數(shù)字是0;從右邊開始計(jì)數(shù)時(shí),起始數(shù)字是1。計(jì)數(shù)方向不同,起始數(shù)字也不同。
  • 不管從哪個(gè)方向開始計(jì)數(shù),截取方向都是從左到右。
  • [root@hadoop-master ~]# echo ${my_name} leo825 [root@hadoop-master ~]# echo ${my_name:0-3:2} 82

    從右開始計(jì)數(shù)不太好理解,這個(gè)步驟是首先從右邊開始第1個(gè)向左查第3個(gè)位是8,然后向右數(shù)2位就是82

    獲取字符串位置

    [root@hadoop-master ~]# echo ${my_name} leo825 [root@hadoop-master ~]# echo `expr index "$my_name" 8` 4

    以上腳本中 “`” 是反引號(hào),而不是單引號(hào) “’”,不要看錯(cuò)了,需要執(zhí)行指令的都需要反引號(hào),就是Esc鍵正下方的那個(gè)鍵。

    總結(jié)

    以上是生活随笔為你收集整理的每天学一点儿shell:shell字符串变量的基本操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。