Latest web development tutorials

シェル?変数

シェル変数

次のようなドル記号($、PHP言語の変数が必要)、せずに、変数、変数名を定義する場合:

your_name="w3big.com"

あなたに精通していると、すべてのプログラミング言語が同じではない可能性がある、変数名と等号の間にスペースがないことに注意してください。 一方、変数名は、これらの命名規則に従う必要があります。

  • 最初の文字は英字(aからz、A〜Z)でなければなりません。
  • いいえスペースは、アンダースコア(_)を使用します。
  • あなたは句読点を使用することはできません。
  • あなたは(利用可能な予約済みのキーワードを表示するには、helpコマンド)キーワードではbashを使用することはできません。

:明示的に直接割り当てることに加えて、あなたはまた、などのステートメントで変数に値を割り当てることができます

for file in `ls /etc`

上記の文循環のうち、ファイル名は/ etcディレクトリ。


変数の使用

このように、ドル記号の後に変数名である限り、定義された変数を使用します。

your_name="qinjx"
echo $your_name
echo ${your_name}

中括弧外の変数名は省略されている、とすべての権利なしに、このような次のような場合など、境界の識別変数を説明するためにカッコを追加します。

for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

あなたが書かれたスキル変数プラスブレースは、「私は$ skillScriptが得意です」エコー与えていない場合は、インタプリタは(その値が空である)変数として$ skillScriptを置く、コードの実行は、我々は再び同じことを期待した結果ではありません。

すべての変数の中括弧を教え、それは良いプログラミング習慣です。

定義された変数を再定義することができる、など。

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

書き込みは有効ですが、2番目の割り当ては$ your_name = "アリババ"を書き込むことができないと、それがドル記号($)に追加されたときに、変数を使用することに注意してください。

読み取り専用変数

値は読み取り専用の変数を変更することはできません、読み取り専用変数は読み取り専用変数として定義することができますコマンドを使用します。

次の例では、結果が指定されている読み取り専用の変数を変更してみてください:

#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.w3big.com"

以下の結果でスクリプトを実行します。

/bin/sh: NAME: This variable is read only.

変数を削除します

変数を削除するには、unsetコマンドを使用します。 構文:

unset variable_name

変数が削除された後に再利用することはできません。 unsetコマンドは、読み取り専用の変数を削除することはできません。

#!/bin/sh
myUrl="http://www.w3big.com"
unset myUrl
echo $myUrl

上記の実施例には、何も出力がありません。

変数の型

あなたがシェルを実行すると、同時に三つのパラメータがあります:

  • 1)スクリプトまたはコマンドで定義されたローカル変数ローカル変数は、現在のシェルのインスタンスでのみ有効である、他のシェルのスタートアッププログラムは、ローカル変数にアクセスすることはできません。
  • 2)シェルプログラムを含むすべてのプログラムが、開始の環境変数は 、環境変数にアクセスすることができ、いくつかのアプリケーションは、それらの正常な動作を保証するために、環境変数を必要とします。 必要な場合には、シェル・スクリプトは、環境変数を定義することができます。
  • 3)シェル変数は、変数がシェルプログラムで設定された特別な変数であるシェル。 環境変数の可変部分シェル、一部は、シェルの正常な動作を保証するローカル変数であります

シェル文字列

String型のシェルプログラミングは最も一般的で有用なデータ・タイプである(数値と文字列を除いて、また便利な他の種類を欠いている)、文字列は単一引用符で囲むことができ、二重引用符を使用することもでき、または引用符でないかもしれません。 PHPでの単一および二重引用符の違いは似ています。

単一引用符

str='this is a string'

シングル引用符で囲まれた文字列の制限:

  • 文字列変数内の単一引用符が無効であるように、単一引用符内の任意の文字を出力します。
  • シングル引用符で囲まれた文字列は単一引用符で表示されます(エスケープ文字も後に単一引用符を使用)することはできません。

二重引用符

your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"

ダブルの利点を引用します:

  • 二重引用符は変数を持つことができます
  • 二重引用符はエスケープ文字を表示することができ

文字列連結

your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

文字列の長さを取得します。

string="abcd"
echo ${#string} #输出 4

抽出部分

最初の2つの文字列から次の例では、4文字のキャプチャを開始します:

string="w3big is a great site"
echo ${string:1:4} # 输出 unoo

サブストリングを探します

文字"iまたはS"の位置を探します:

string="w3big is a great company"
echo `expr index "$string" is`  # 输出 8

注:上記のスクリプト"` "抗引用符ではなく一重引用符" ' "ああ、だまされてはいけません。


シェル・アレイ

bashは(多次元配列をサポートしていません)1次元配列をサポートし、配列のサイズを定義していません。

C言語、0開始番号からの配列要素の添え字に似ています。 素子のアレイは、添え字を利用するために取得し、添字は、整数またはその値が0以上であるべきである演算式であってもよいです。

配列を定義

シェルでは、アレイ、分離「空間」のシンボルを持つ配列要素を示すために括弧を使用しています。 次のように配列の一般的な形式は定義されています。

数组名=(值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

あなたは連続インデックスを使用できず、目標範囲の下の制限はありません。

配列を読みます

一般的なフォーマットは、配列要素の値を読み取るされます。

${数组名[下标]}

例えば:

valuen=${array_name[n]}

以下のようなすべての要素の配列を取得することができます@記号を使用します。

echo ${array_name[@]}

配列の長さを取得します。

例えば、文字列の長さの長さの配列を取得し、同じ方法を取得:

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

シェルノート

コメントの先頭に「#」の行は、インタプリタによって無視されます。

SHない複数行のコメントはありません、それぞれの行は#記号を追加することができます。 これだけのように:

#--------------------------------------------
# 这是一个注释
# author:本教程
# site:www.w3big.com
# slogan:学的不仅是技术,更是梦想!
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
# 
#
##### 用户配置区 结束  #####

開発プロセス場合は、コードの大きな塊が一時的にしばらくとコメント解除後にコメントする必要が発生した、どのようにそれを行うには?

各行には、あまりにも面倒、あなたは関数として定義され、中括弧のペアでアノテートされるいくつかのコードを置くことができ、この関数を呼び出すする場所、このコードが実行されていない、と注釈として到達することはありません#記号を追加します効果。