記事ディレクトリ
I.はじめに
この記事では、主にシェルスクリプトの文字列変数と配列変数を紹介します。
Shellの配列タイプは文字列と配列であり、基本的にすべての作業を実行できることを覚えておいてください。始めましょう。
2.シェル文字列変数
2.1シングル、ダブル、バックティック
シェルには、一重引用符''、二重引用符 ""、および逆引用符``の3種類の引用符があります。
次のように、最初に一重引用符''と二重引用符""について説明しましょう。
同じ点:どちらも変数の真ん中のスペースの問題を解決します。「スペース」はbashでは非常に特殊文字であるため、たとえば、str = this is Stringがbashで定義されている場合、エラーが報告されます。エラーを回避するには、一重引用符''と二重引用符""が必要です。利用される。
違い:一重引用符''と二重引用符""の違いは、一重引用符''はすべての文字から特別な意味を奪い、一重引用符''は単純な文字になることです。例外は、二重引用符 ""内のパラメーター置換($)とコマンド置換( ``)です。たとえば、次のように入力します。
n=3
echo '$n'
しかし
バックティックをもう一度見てください。バックティックはコマンド置換です。コマンド置換とは、シェルが最初にコマンドを実行し、出力結果を一時的に保存して、適切な場所に出力できることを意味します。次の例では、コマンド実行の結果が変数に格納されます。
#!/bin/bash
DATE=`date`
echo "Date is $DATE"
UP=`date ; uptime`
echo "Uptime is $UP"
概要:バッククォートのコア機能はコマンド置換であり、実行するコマンドをラップし、英語のセミコロンをラップすることは改行です。
一重引用符と二重引用符は異なります。
変数は二重引用符で識別できますが、変数は一重引用符で識別できません。
エスケープ文字は二重引用符で識別できますが、エスケープ文字は一重引用符で識別できません。
2.23つの形式の文字列
シェルでは、文字列には次の3つの形式があります。引用符なし、一重引用符、および二重引用符です。
your_name="runoob"
echo $your_name
# 这里会被解释为一个被双引号包裹的字符串,加$符号的变量会被读取
str="Hello, I know you are $your_name! \n"
echo $str
# 这里会被解释为两个双引号字符串拼接,即""+变量+"",加$符号的变量会被读取
str="Hello, I know you are "$your_name"! \n"
echo $str
# 引号无法解释变量的
str='Hello, I know you are "$your_name"! \n'
echo $str
# 双引号内部可以加转义字符,转义双引号为普通字符,而不是被解释为双引号字符串拼接
str="Hello, I know you are \"$your_name\"! \n"
echo $str
str="Hello, I know you are '$your_name'! \n"
echo $str
str="Hello, I know you are \'$your_name\'! \n"
echo $str
2.3文字列変数の割り当てと読み取り
echo $a
echo a
a=b
echo $a
2.4文字列の連結
your_name="runoob"
# 不使用引号,则赋值号右边的字符串中不能包含空格,因为不能包含空格,但是$符号
# 默认是空格确定变量名的,如果变量名后面还是字符串,要读取的变量必须加上{}
greeting_0=hello,$your_name
echo $greeting_0
# $符号默认是空格确定变量名的,如果变量名后面还是字符串,要读取的变量必须加上{}
greeting_0=hello,${your_name}!
echo $greeting_0
# 使用双引号拼接
greeting_1="hello, "$your_name" !"
greeting_2="hello, "${your_name}" !"
greeting_3="hello, $your_name !"
greeting_4="hello, ${your_name} !"
echo $greeting_1
echo $greeting_2
echo $greeting_3
echo $greeting_4
# 使用单引号拼接
greeting_5='hello, '$your_name' !'
greeting_6='hello, '${your_name}' !'
greeting_7='hello, $your_name !'
greeting_8='hello, ${your_name} !'
echo $greeting_5
echo $greeting_6
echo $greeting_7
echo $greeting_8
2.5文字列の長さを取得する
文字列の前に#を追加して、メソッドを呼び出さずに文字列の長さを取得します
string="abcd"
echo ${
#string} # 输出 4
echo ${
#string[0]} # 输出 4
2.6部分文字列の抽出
最初の文字のインデックス値は0です。たとえば、文字列の2番目の文字から4文字を切り捨てます。
string =“ runoob is a great site”
echo $ {string:1:4}#再出unoo
3、シェル配列
Bashは1次元配列のみをサポートし、多次元配列はサポートしません。連続した添え字を使用することはできません。また、配列のサイズに制限はありません。つまり、配列の長さは不定であり、背面に無制限の要素を含めることができます。 。配列要素の添え字には、0から始まる番号が付けられています。配列内の要素を取得するには、下付き文字を使用します。下付き文字は整数または算術式にすることができ、その値は0以上である必要があります。
3.1配列定義
シェルでは、括弧は配列を示すために使用され、配列要素は「スペース」記号で区切られます。配列を定義する一般的な形式は次のとおりです。
数组名=(值1 值2 ... 值n)
例えば:
array_name=(value0 value1 value2 value3)
また
array_name=(
value0
value1
value2
value3
)
アレイの個々のコンポーネントを個別に定義することもできます。
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
3.2配列の割り当て
シンプルです
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
3.3配列の読み取り
配列要素の値を読み取るための一般的な形式は次のとおりです。
${
数组名[下标]}
例えば:
valuen=${array_name[n]}
@記号を使用して配列内のすべての要素を取得するか、*を使用して配列内のすべての要素を取得します。次に例を示します。
echo ${array_name[@]}
echo ${array_name[*]}
3.4配列の長さを取得する
配列の長さを取得する方法は、文字列の長さを取得する方法と同じです。つまり、配列変数名の前に#を追加します。次に例を示します。
例
# 取得数组元素的个数
length=${
#array_name[@]}
# 或者
length=${
#array_name[*]}
# 取得数组单个元素的长度
lengthn=${
#array_name[n]}
配列の定義、割り当て、読み取り、および長さの計算は次のとおりです。
概要:シェルでは、配列の操作には次のものが含まれます。
(1)配列要素を書き込むときは、そのすぐ後ろに代入番号と定数/変数を追加するだけです。
(2)配列の要素を読み取る場合、要素を読み取る${}
前があります。
特に、配列全体のすべての要素を取得するには、正方形の添え字番号を使用します。ブラケットは@
またはに変更されます*
。これは、ループ内${array_name[@]}
${array_name[*]}
で一般的に使用されfor var in array
ます。ここでの配列は、配列のすべての要素を取得する必要があります。
(3)単一の配列の長さを取得し、配列要素の上にレイヤーをラップし、配列${#}
全体の長さ(配列全体の要素の数)を取得します。つまり${#array_name[@]}
${#array_name[*]}
、for ((i=0;i<${#array[*]};i++))
で使用されます。
第四に、シェルコメント
シェルには2つのコメント方法があります。
(1)#が前に付いた行はコメントと見なされ、インタプリタによって無視されます。
(2)次のように:<<コメントを使用します。
:<<EOF
注释内容...
注释内容...
注释内容...
EOF
EOFは他の記号も使用できます。
实例
:<<'
注释内容...
注释内容...
注释内容...
'
:<<!
注释内容...
注释内容...
注释内容...
!
ファイブ、終わり
この記事では、主にシェルスクリプトの文字列変数と配列変数を紹介します。
毎日コーディングし、毎日進歩させましょう!!