シェル スクリプト チュートリアル [1] - シェル変数

シェル スクリプト チュートリアル [1] - シェル変数


ディレクトリ: https://blog.csdn.net/shn111/article/details/131590488

参考チュートリアル: https://www.runoob.com/linux/linux-shell.html

オンラインエディター: https://www.runoob.com/try/runco​​de.php? filename=helloworld&type=bash


シェル変数

変数の定義

name="shn"

注: 変数名と等号の間にスペースを入れることはできません。

  • 変数名には英文字、数字、アンダースコアのみを使用でき、最初の文字を数字で始めることはできません
  • bash のキーワードは使用できません (予約されたキーワードを表示するには help コマンドを使用してください)

明示的な直接代入に加えて、ステートメントを使用して変数に値を代入することもできます。

name=$(ls)
name=`ls`

変数の使用

定義された変数を使用するには、変数名の前にドル記号 $ を追加するだけです

name="shn"
echo $name	
echo ${name}

変数名の外側の中括弧はここではオプションです。中括弧は変数の境界を区別するために追加されます。使用されるすべての変数に中括弧を追加することをお勧めします。

echo "I am ${name}hahaha"

上記の状況を中括弧なしで記述すると、echo "I am $namehahaha"変数名が区別できなくなります

定義された変数は再定義できます。再定義時に $ 記号を追加する必要はありません。変数を使用する場合にのみ必要です。

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

読み取り専用変数

次のコマンドを使用して、readonly変数を読み取り専用変数として定義できます。

読み取り専用変数の値は変更できず、次のスクリプトを実行するとエラーが報告されます。

your_name="tom"
readonly your_name
your_name="alibaba"
# script.sh: line 3: your_name: readonly variable

変数の削除

変数はコマンドを使用してunset削除できます

変数を削除すると、再度使用することはできません。unset コマンドは読み取り専用変数を削除できません。

次のコマンドを実行しても何も出力されません

your_name="tom"
unset your_name
echo ${your_name}

シェル文字列

文字列表現には一重引用符、二重引用符を使用することも、引用符を使用しないこともできます

アポストロフィ

name='bob'
str='this is a string'
echo ${str}
# this is a string
str2='hello ${name}'
echo ${str2}
# hello ${name}
str3='this is a \'string'
echo ${str3}
# unexpected EOF while looking for matching `''
str4='this is ''a string'
echo ${str4}
# this is a string
  • シングルクォート内の文字はそのまま出力され、シングルクォーテーション内の変数は無効となります。
  • 単一の一重引用符は (エスケープされていても) 一重引用符文字列内に使用できませんが、ペアとして使用して文字列連結として使用できます。
  • 一重引用符を含めるには、二重引用符で囲まれた文字列で囲みます。

二重引用符

name="bob"
str="this is a string"
echo ${str}
# this is a string
str2="hello ${name}"
echo ${str2}
# hello bob
str3="this is a \"string"
echo ${str3}
# this is a "string
str4="this is ""a string"
echo ${str4}
# this is a string
str5="this is a\tstring"
echo -e ${str5}
# this is a		string
  • 二重引用符内に変数を含めることができます
  • エスケープ文字は二重引用符で囲むことができます
  • echo -e は、\t \a \b \n などのエスケープ文字を解釈します。

文字列を連結する

your_name="bob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1
# hello, bob ! hello, bob !

# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2  $greeting_3
# hello, bob ! hello, ${your_name} !

文字列の長さを取得する

#get を使用する

変数が文字列の場合、${#string} は ${#string[0]} と同等です。

string="abcd"
echo ${
    
    #string}
# 4
string="abcd"
echo ${
    
    #string[0]}   
# 4

部分文字列を抽出する

string:n:m は、
文字列 string の n 番目の文字から始まる m 文字を抽出します。

注: 最初の文字のインデックスは 0 です。

string="helloworld"
str2=${string:2:4}
echo ${str2}
# llow

部分文字列を検索

文字 i または o の位置を調べます (どちらか最初に来る文字がカウントされます)

string="runoob is a great site"
echo `expr index "$string" io`
# 4

おすすめ

転載: blog.csdn.net/shn111/article/details/131590407