鳥初心者シェルプログラミング(7)変数の参照とスコープ

変数の参照

だから、変数を定義し、どのように変数それの値を出力するには?参照の変数方法。

  • ${变量名}変数への参照と称される
  • echo ${变量名}変数の値を見ます
  • ${变量名}これは、いくつかの例では省略することができます $变量名
[root@lincoding ~]# string="hello Shell"
[root@lincoding ~]# echo ${string}
hello Shell
[root@lincoding ~]# echo $string
hello Shell

そして、そこに中括弧で囲まれた変数があり、括弧内の任意の違いをかけていないが、それですか?

[root@lincoding ~]# echo $string9

[root@lincoding ~]# echo ${string}9
hello Shell9

参考文献に見つけることができるstring変数を追加した後9ではなく、中括弧を追加するための参照をします、string9変数名として、言及プラス括弧は、その後の印刷、あるstring変数尾を追加し、9


デフォルトのスコープ変数

の発効前に変数が定義されていない別のシェルに切り替えるときに私たちは、変数を定義することにより、現在のシェル環境で有効になります

私たちは、シェルスクリプト内の変数を定義しますstr

#!/bin/bash

str="my shell"
echo ${str}

シェルスクリプトの実行時間は、変数シェルスクリプト定義の値を出力します。電流端子参照変数シェルスクリプトは、ヌル値を出力します。

[root@lincoding ~]# ./test.sh
my shell
[root@lincoding ~]# echo ${str}

[root@lincoding ~]#

説明変数strのみシェルスクリプト内のスコープ。

あなたはターミナルで変数を定義する場合、変数を参照するためのシェルスクリプトが有効に行くことができますか?

[root@lincoding ~]# mystr="abc"
[root@lincoding ~]# cat test.sh
#!/bin/bash

echo ${mystr}
[root@lincoding ~]# ./test.sh

[root@lincoding ~]# bash test.sh

[root@lincoding ~]# . test.sh
abc
[root@lincoding ~]# source test.sh
abc

スクリプトを実行するために、上記の4つの方法を実行するために使用された4つの前のセクションの実装の影響はまた、詳細に説明します。

モード1とモード2は、現在の端末で定義され、電流端子の可変範囲に、スクリプトを実行するために子プロセスを生成することになるので、親プロセスで定義された子プロセスの参照変数は、力ではありません。

4次の3つの方法と手段が子プロセスを生成しようとしますが、直接スクリプトの実行中に、現在の端末環境の範囲内でされていないので、変数なので、変数への参照が有効になっています。


輸出輸出変数

あなたが親プロセス定義された変数は、子または子シェルで発効たいとし、使用するために、次に必要export変数のエクスポート、次の例を使用するための特定の方法を:

[root@lincoding ~]# mystr="abc"
[root@lincoding ~]# bash test.sh

[root@lincoding ~]# export mystr
[root@lincoding ~]# bash test.sh
abc
[root@lincoding ~]# ./test.sh
abc

使用中の目に見えるexport、ターミナル定義された変数は、test.shスクリプトは変数が有効になっている参照しています。また、子供が親プロセスで定義された変数の値を得ることができることを述べました。

変数を使い切った場合は、変数をクリアしようとしている、あなたが使用することができますunset

[root@lincoding ~]# unset mystr
[root@lincoding ~]# echo ${mystr}

[root@lincoding ~]#

概要

デフォルトの変数のスコープを使用すると、シェルや子プロセスの親プロセスを使用するには、子供のための変数をしたい場合、我々は必要としない、シェル自身であるexport 变量名あなたは、もはや使用する時に、変数を使用する場合、変数のキーワードをエクスポートするにはunset 变量名、変数は空の値を。

おすすめ

転載: www.cnblogs.com/xiaolincoding/p/11615691.html