シェルプログラミングの仕様と変数
1.シェルの概要
1.シェルの概念
1.実行するコマンドを順番にテキストファイルに保存します
2.ファイルに実行可能権限を付与し
ます3.さまざまなシェル制御ステートメントと組み合わせてより複雑な操作を完了することができます
2.シェルスクリプトアプリケーションのシナリオ
1.反復操作
2.対話型タスク
3.バッチトランザクション処理
4.サービス実行ステータスの監視
5.タスク実行のタイミング
3.シェルの役割
1.シェルのロールコマンドインタープリター「translationofficer」は
、システムカーネルとユーザーの間にあり、コマンドラインの解釈を担当し
ます。2。ユーザーのログインシェル
ログイン後にデフォルトで使用されるシェルプログラム。通常、/ bin / bashは
異なります。内部の指示、操作環境などは異なります
4.シェルスクリプトの構成
1.スクリプトステートメント(インタープリター);最初の行が「#!/ bin / bash」の場合、この行の下のコードステートメントは/ bin / bashプログラム、および#!./ bin /によって解釈および実行されることを意味します。 bashはデフォルトの解釈デバイスです。#!/ usr / bin / python、#!/ usr / bin / expectなどの他のタイプのインタープリターがあります。
2.コメント情報:「#」で始まるステートメントはコメント情報として表され、コメントされたステートメントはスクリプトの実行時に実行されません。
3.実行可能ステートメント:「」の間の文字列を出力するために使用されるlechoコマンドなど。
5.例:最初のシェルスクリプトを編集する
vim /root/first.sh#!/
bin / bash
#これは私の最初のシェルスクリプトです。cd
/ boot
echo "現在のディレクトリは次の場所にあります:"
pwd
echo "vmlで始まるファイルは次のとおりです:"
ls -lh vml **
6.シェルスクリプトの実行(2つの方法)
方法1:パスを指定するコマンドには、ファイルにx権限が必要です。
chmod + x /root/first.sh
は絶対パスを指定します:/root/first.sh
は相対パスを指定します:./ first.sh
方法2:スクリプトを解釈するシェルを指定します。ファイルにxが含まれている必要はありません。権限。
①shコマンド
shスクリプトパス:
shfirst.sh②sourceコマンドは「ドットコマンド」とも呼ばれ、ドット記号(。)です。x権限のないbashの内部コマンドであり、相対パスまたは絶対パスを使用する必要があります。道。
ソーススクリプトパス:.first.shまたはソースfirst.sh(現在のシェル環境を使用してスクリプトファイルを実行すると、ディレクトリが変更されます)
2、シェルリダイレクトとパイプライン操作
1.インタラクティブハードウェア機器
標準入力:ユーザーがデバイスから入力したデータを受信します。
標準出力:デバイスを介してユーザーにデータを出力します。
標準エラー:デバイスを介して実行エラー情報を報告します。
の種類 | デバイスファイル | ファイル記述番号 | 標準デバイス |
---|---|---|---|
標準入力 | / dev / stdin | 0 | キーボード |
標準出力 | / dev / stdout | 1 | モニター |
標準エラー出力 | / dev / stderr | 2 | モニター |
2.リダイレクト操作
の種類 | オペレーター | 使用する |
---|---|---|
入力をリダイレクトする | < | 指定されたファイルからデータを読み取ります |
出力をリダイレクトする | >> | 標準出力結果を指定したファイルに保存し、元の内容を上書きします |
出力をリダイレクトする | >> | 元のコンテンツを上書きせずに、指定したファイルの最後に標準出力結果を追加します |
標準エラー出力 | 2> | エラー情報を指定したファイルに保存し、元のコンテンツを上書きします |
標準エラー出力 | 2 >> | 元のコンテンツを上書きせずに、指定したファイルの最後にエラーメッセージを追加します |
混合出力 | &> | 標準出力と標準エラーを同じファイルに保存します |
混合出力 | 2>&1 | 標準エラー出力を標準出力にリダイレクトします |
3.パイプライン操作「l」
パイプ記号「I」の左側にあるコマンドの出力結果は、右側のコマンドの入力(処理オブジェクト)として使用されます。同じコマンド行で複数のパイプを使用できます。
ps aux l wc -l
echo“ abc123” l passwd --stdin zhangsan
3、シェル変数
1.変数の役割
システムとユーザーが使用する必要のある特定のパラメーター(値)を格納するために使用されます。
変数名:システムによって事前設定された、またはユーザー定義の固定名を使用します。
変数値:ユーザー設定およびシステム環境の変更に応じて変更できます。
2.変数の分類
カスタム変数:ユーザーが定義、変更、使用します。
環境変数:システムによって維持され、作業環境を設定するために使用されます。
場所変数:コマンドラインからスクリプトプログラムにパラメーターを渡します。
定義済み変数:組み込み変数の一種直接変更できないバッシュ
3.新しい変数を定義します
形式:変数名=変数値
①変数の命名規則:文字またはアンダースコアで始まり、大文字と小文字が区別
されます
。変数に値を割り当てるには、等号(=)が使用されます。等号(=)演算子の左側は変数名、および等符号(=)操作記号の右側は、変数に格納されている値です
product = benet
version = 4.0
name =“ srs” ②
変数の値を表示します
形式:echo $ variable name
echo $ product
echo $ version
echo $ name
echo $ product $ version $ name
4.値を割り当てるときは引用符を使用します
- 二重引用符:$記号を使用して他の変数値を引用できます
- 一重引用符:他の変数値を引用することは禁止されており、$は通常の文字として扱われます
- バッククォート:コマンドの置換、コマンドの実行後に出力を抽出します、「$(...)と同じ効果があります
5.キーボードからコンテンツを入力して、変数に値を割り当てます
①Method1つ
の入力内容を取得するための読み取りコマンドは、
変数名[「プロンプトの情報は、」「-p]を読んで
$変数名はエコー②method
2
vimのread.sh
エコー-n 『プロンプトの情報』
の読み取りが最も有名になっ
エコー$変数名
7.グローバル変数を設定します
pstreeコマンドを使用してシェル環境を表示したり、bashコマンドを入力してサブシェル環境を開始し
たり、ctrl + Dキーの組み合わせを押したり、exitコマンドを入力してサブシェル環境を終了し
たりできます。exportproductversion pstree view interface
bash pstreeinterfaceの後
exitは、
デフォルトでpstreeインターフェースを起動します。これは、新しく定義された変数です。現在のシェル環境でのみ有効であるため、ローカル変数と呼ばれます。サブルーチンまたは新しいサブシェル環境に入るとき、ローカル変数は使用できなくなりました。
指定された変数は、内部コマンドexportを介してグローバル変数としてエクスポートできるため、ユーザー定義変数はすべてのサブシェル環境で引き続き使用できます。
形式1:変数名のエクスポート
形式2:変数名のエクスポート=変数値
8.整数変数の操作
演算子:+加算、-減算、*乗算、/除算、剰余%
一般的に使用される算術式:
i=$(expr 11\* 8)
i=$((11 * 8))
i=$[11 * 8]
let i=11*8
i++ 相当于 i=$[$i+1]
i-- 相当于 i=$[$i-1]
i+=2 相当于 i=$[$i+2]
以下は、乗算、加算、減算、除算の例です。これはこれに似ています。
シェルの他の4つの変数
1.環境変数
ユーザーの作業環境を設定するためにシステムによって事前に作成されます。
構成ファイル:/ etc / profile(グローバルに有効)、〜/ .bash_profile(現在のユーザー環境)
2.一般的な環境変数
PWD、PATH
USER、SHELL、HOME
USERはユーザー名を示します
HOMEはユーザーのホームディレクトリを
示しますLANGは言語と文字セットを
示しますPWDは現在の作業ディレクトリを
示しますPATHは実行可能プログラムのデフォルトの検索パスを示します
envコマンドを使用して現在のを表示します作業環境環境変数
①、PATH(パス環境変数)
echo $PATH #查看当前搜索路径
PATH="$PATH:/root" #将/root目录添加到搜索路径
export PATH="$PATH:/root" #输出为全局环境变量
first.sh
②、読み取り専用変数
変数値の変更が許可されていない場合に使用されます
readonly 命令设置只读变量
readonly PRODUCT #设置为只读变量
echo $PRODUCT
PRODUCT=Python #只读变量不可以被重新赋值
unset PRODUCT #只读变量不可以被删除,unset 命令用于删除变量,但无法删除只读变量,只能重启系统解决
③、位置可変
コマンドライン操作を実行する場合、最初のフィールドはコマンドまたはスクリプトプログラムの名前を表し、残りの文字列パラメーターは左から右の順に位置変数に割り当てられます。
$ n:nは数値、$ 0はコマンド自体を表し、1〜9は最初から9番目のパラメーターを表し、10を超えるパラメーターは中括弧で表す必要があります。たとえば、10番目のパラメーターは$ {10}です。
vim srs.sh
#!/bin/bash
echo $1
echo $2
...
echo ${10}
echo $9 + ${10}
④、事前定義された変数
コマンドまたはスクリプトによって処理されるパラメーターを示します。
$ *:すべてのパラメータをスペースで区切られた文字列全体として扱います。これは「$ 1 $ 2 $ 3 $ 4」を表します。
$ @:二重引用符で囲まれた各パラメーターをn個のパラメーターのリストに区切ります。各パラメーターは独立しており、「$ 1」、「$ 2」、「$ 3」、「$ 4」を表します。
$ 0:現在実行中のスクリプトまたはコマンドの名前を表します。
$#:コマンドまたはスクリプトによって処理されるパラメーターの数を示します。
$?:前のコマンドまたはスクリプトが実行された後の戻りステータスコードを表します。戻り値0は実行が正しいことを示し、0以外の戻り値は実行が異常であることを示します。
また、シェルスクリプトのreturnexit関数によって返されるexit値としてもよく使用されます。
vim mybak.sh
#!/bin/bash
time=backup-`date +%F`.tar.gz
tar zcf $time $* &> /dev/null #/dev/null为黑洞文件,存放丢弃数据
echo "执行了 $0 脚本文件,"
echo "一共完成 $# 个对象的压缩"
echo "具体压缩内容为: $*"
~
3.浮動小数点演算
Bashは浮動小数点演算をサポートしていません。浮動小数点演算を実行する必要がある場合は、処理にbc、awkを使用する必要があります。
紀元前
f=$(echo "6.3+2.5"|bc)
echo $f
f=$(echo "6.3-2.5"|bc)
echo $f
f=$(echo "6.3*2.5"|bc)
echo $f
f=$(echo "scale=3 ; 6.3/2.5"|bc) scale=3表示小数点后3位
echo $f
f=$(echo "2.2/(2.2-1.1)*2+4.8"|bc)
echo $f
awk
f=$(awk 'BEGIN{print 6.3+2.5}')
echo $f
f=$(awk 'BEGIN {print 6.3-2.5}')
echo $f
f=$(awk 'BEGIN{print 6.3*2.5}')
echo $f
f=$(awk 'BEGIN{print 6.3/2.5}')
echo $f
f=$(awk 'BEGIN{print (6.3-2.5)*2+3}')
echo $f
awk只显示6位有效位
f=$(awk 'BEGIN{print 1000000000/3}')
echo $f
f=$(awk 'BEGIN{print 1000/3}')
echo $f