03-Shellスクリプト学習--文字列と配列

2924 ワード

文字列
文字列はshellプログラミングで最もよく使われる最も有用なデータ型(数字や文字列以外に使いやすいタイプはありません)、文字列は単一引用符でも二重引用符でも引用符でも引用符でも引用符でも使えます.一重引用符の違いはPHPと似ています.
一重引用符の違い:
  • 二重引用符には変数があり、単一引用符はそのまま出力されます.
  • 二重引用符にはエスケープ文字が表示され、単一引用符はそのまま出力されます.
  • 単一引用符文字列には単一引用符は表示されません.

  • つづり文字列
    #!/bin/bash
    
    str1='i'
    str2='love'
    str3='you'
    
    echo $str1 $str2 $str3
    echo $str1$str2$str3
    echo $str1,$str2,$str3

    出力:
    i love you
    iloveyou
    i,love,you

    文字列の長さの取得
    #!/bin/bash/
    
    str='i love you'
    
    echo ${#str}
    
    #   :10

    切り取り文字列
    #!/bin/bash/
    
    str='i love you'
    
    echo ${str:1} #   1      。   0  。
    echo ${str:2:2} #   2   2 。
    echo ${str:0} #     。
    echo ${str:-3} #     ,  0。

    出力:
    love you
    lo
    i love you
    i love you

    文字列の検索
    #!/bin/bash/
    
    str="i love you"
    
    echo `expr index "$str" l`
    echo `expr index "$str" love` #         ,         
    echo `expr index "$str" o`
    echo `expr length "$str"` #     
    echo `expr substr "$str" 1 6` #       1    6   。    0   。

    出力:
    3
    3
    4
    10
    i love

    文字列変数には二重引用符が必要です.
    *拡張:expr文字列の使用方法については、次のとおりです.
    STRING : REGEXP   anchored pattern match of REGEXP in STRING
    
    match STRING REGEXP        same as STRING : REGEXP
    
    substr STRING POS LENGTH   # STRING POS      LENGTH   。POS    1   。
    
    index STRING CHARS         # STRING     CHARS       ,      0
    
    length STRING              #     

    はいれつ
    bashは1次元配列(多次元配列はサポートされていません)をサポートし、配列のサイズを限定しません.C言語と同様に、配列要素の下付き文字は0から番号付けされます.配列内の要素を取得するには、下付き文字を使用します.下付き文字は整数または算術式で、0以上の値を指定します.
    Shellでは配列を括弧で表し,配列要素は 符号で分割する.配列を定義する一般的な形式は、次のとおりです.
    array_name=(value1 value2 ... valuen)

    例:
    array_name=(value0 value1 value2 value3)

    または
    array_name=(
        value0
        value1
        value2
        value3
    )

    配列の個々のコンポーネントを個別に定義することもできます.
    array_name[0]=value0
    array_name[1]=value1
    array_name[2]=value2

    連続する下付き文字を使用しなくてもよく、下付き文字の範囲に制限はありません.
    配列を読み込みます.
    echo ${array_name[2]} #     2   
    echo ${array_name[*]} #      
    echo ${array_name[@]} #      
    
    
    echo ${#array_name[*]} #      
    echo ${#array_name[@]} #      
    echo ${#array_name[1]} #            

    出力:
    value2
    value0 value1 value2 value3
    value0 value1 value2 value3
    4
    4
    6

    まとめ
    shellの文字列と配列を比較すると、次のことがわかります.
    文字列
    str="hello"
    ${#str} #        
    echo ${str} #        
    echo ${str:1} #      

    配列:
    arr=(a1,a2,a3)
    ${#str[*]} #       
    ${#str[1]} #           
    
    echo ${str[*]} #       
    echo ${str[1]} #         
    ${#ele*} ele要素長属性を読み取る${ele*} ele要素を読み取るまたは操作するために使用される