shellスクリプトプログラミング学習(五)入出力リダイレクトと環境変数
4028 ワード
入出力リダイレクト
入出力リダイレクトはshellでよく使用されます.例えば、1つのコマンドの出力をファイルに保存したり、パイプを介してコマンドを組み合わせて使用したりするなど、shellスクリプトはshellでより複雑な論理を実現することができるので、入出力リダイレクトメカニズムを熟練して把握する必要があります.linuxシステムでは「すべてファイル」が知られていますが、shellを開くたびに、linuxは3つのファイルを開いてプログラムに使用します. stdIN(標準入力)通常はターミナルキーボード stdOUT(標準出力)--通常は端末ディスプレイ である. stdERR(標準エラー出力)--通常も端末ディスプレイ である.
デフォルトでは、プログラムはキーボードから入力を取得して結果とエラーを画面に印刷しますが、これはプログラムが動作する唯一の方法ではありません.リダイレクトオペレータを使用して、他の入力ファイルと出力ファイルを指定してプログラムを使用することができます.
linuxの「すべてがファイル」の設計のため、入出力ファイルにリダイレクトすることで、私たちのプログラムを普通のファイル、パイプファイル、ネットワークソケット、ハードウェア設備などのどこからでも入力することができて、プログラムの結果をどこに出力することができて、このようにプログラムの柔軟性を大幅に向上させました.最後に、リダイレクトオペレータのいくつかの修飾タグを出力することにも注意してください.実際にはよく使用されます.
かんきょうへんすう
shellで直接設定した変数は、現在のshellでのみ有効です.サブshellでも変数を使用できるようにしたい場合があります.たとえば、shellスクリプトに変数を渡す場合は、exportコマンドを使用して変数をエクスポートする必要があります.サブshellでも有効な変数は環境変数とも呼ばれます.
環境変数の原理は簡単で、現在のshellはexportでエクスポートされた変数を記録し、現在のshellからサブshellを開くと(例えばshellスクリプトを実行する)、サブshellにエクスポートされた変数が予め設定されていることが理解できます.これによりshellが導出した変数はそのサブshellにのみ有効であることも分かった.
また、現在のshellで設定されている変数を表示するには、setコマンドを使用します.変数を削除するにはunsetコマンドを使用します.
入出力リダイレクトはshellでよく使用されます.例えば、1つのコマンドの出力をファイルに保存したり、パイプを介してコマンドを組み合わせて使用したりするなど、shellスクリプトはshellでより複雑な論理を実現することができるので、入出力リダイレクトメカニズムを熟練して把握する必要があります.linuxシステムでは「すべてファイル」が知られていますが、shellを開くたびに、linuxは3つのファイルを開いてプログラムに使用します.
デフォルトでは、プログラムはキーボードから入力を取得して結果とエラーを画面に印刷しますが、これはプログラムが動作する唯一の方法ではありません.リダイレクトオペレータを使用して、他の入力ファイルと出力ファイルを指定してプログラムを使用することができます.
# > STDOUT
ls > out.txt
# >> STDOUT
ls >> out.txt
# < STDIN
grep '\.txt' < in.txt
# | , ,
ls | wc -l
# << delimiter STDIN (delimiter)
# php ,
cat <
linuxの「すべてがファイル」の設計のため、入出力ファイルにリダイレクトすることで、私たちのプログラムを普通のファイル、パイプファイル、ネットワークソケット、ハードウェア設備などのどこからでも入力することができて、プログラムの結果をどこに出力することができて、このようにプログラムの柔軟性を大幅に向上させました.最後に、リダイレクトオペレータのいくつかの修飾タグを出力することにも注意してください.実際にはよく使用されます.
# , 。
# 。
sh script.sh > /dev/null
# STDERR 。
# STDIN STDOUT , STDERR > 2 。
sh script.sh 2> error.txt
# > & STDIN STDOUT 。
sh script.sh &> /dev/null
# , STDIN , STDERR STDIN, 。
sh script.sh > /dev/null 2>&1
# STDIN STDOUT 。
sh script.sh >out.txt 2>error.txt
かんきょうへんすう
shellで直接設定した変数は、現在のshellでのみ有効です.サブshellでも変数を使用できるようにしたい場合があります.たとえば、shellスクリプトに変数を渡す場合は、exportコマンドを使用して変数をエクスポートする必要があります.サブshellでも有効な変数は環境変数とも呼ばれます.
# name , shell name 123
name=123
export name=123
# PATH
export PATH=$path:/home/my/shell
環境変数の原理は簡単で、現在のshellはexportでエクスポートされた変数を記録し、現在のshellからサブshellを開くと(例えばshellスクリプトを実行する)、サブshellにエクスポートされた変数が予め設定されていることが理解できます.これによりshellが導出した変数はそのサブshellにのみ有効であることも分かった.
# export 1 shell
# test1.sh
echo $name1
# main shell
name1=jack
export name1
sh test1.sh
# jack
# export 2 shell
# test2.sh
name2=jack
export name2
# main shell
sh test2.sh
echo $name2
# , name2
また、現在のshellで設定されている変数を表示するには、setコマンドを使用します.変数を削除するにはunsetコマンドを使用します.
# shell
set
# shell name
unset name