シェルスクリプト-基本的な編集仕様と変数
シェルスクリプトの概要
システムカーネルとユーザー間のコマンドを解釈するために使用されます。"翻译官"
実行するコマンドを順番にテキストファイルに保存します。
ファイルに実行可能権限を付与し[默认权限为644所以给予权限"+x"]
ます。さまざまなシェル制御ステートメントを組み合わせて、より複雑な操作を完了することができます。
シェルスクリプトアプリケーションのシナリオ
►繰り返し操作
►インタラクティブタスク
►バッチトランザクション処理
►サービス運用状況の監視
定期検査|最適化の実行|ログの保存
►時限タスク実行
シェル動作環境
プログラムがデフォルトで使用されるシステムである場合Shell
に自動的にロードするログインユーザープログラムファイルが配置されているShell
bash
Linux
Shell
bash
/bin/bash
cat /etc/shells
シェルスクリプトの構成
まず、最初の行で通訳を宣言する必要があります
シェル:#!/bin/bash
次のコードステートメントが/ bin / bashプログラムを介して実行され、
Pythonを解釈して実行することを示します#!/usr/bin/python
。#!/usr/bin/expect
次はコメント#またはコマンドステートメントです
!#/bin/bash //解释器
#There is nothing here //注释
echo ”阿巴阿巴“ &> /dev/null //丢入无尽黑洞
シェルスクリプトの実行
①合格./スクリプト実行
echo "echo awsl" > start.sh
十分な権限がないため、現時点では実行できません
chmod +x start.sh
chmod
その実行可能権限を解除することによって
この時点でそれは輝いていて、それはいつでも実行することができます
./start.sh
絶対パス/相対パス:bash環境を実行しても、ファイル内の動作環境は変更されません
②shを介してスクリプトを実行します[許可は不要]
この時点で、その権限を差し引きます
chmod -x start.sh
sh start.sh
③ソースからスクリプトを実行する[許可は不要]
source start.sh
sh
またsource
、権限を実行する必要はありませんが、実行Shell
環境として現在の環境を継承します。
リダイレクトとパイプライン操作
①ハードウェア機器の切り替え
の種類 | 標準デバイス | デバイスファイル | デバイスの説明番号 |
---|---|---|---|
標準入力 | キーボード | / dev / stdin | 0 |
標準出力 | モニター | / dev / stdout | 1 |
保証エラー | モニター | / dev / stderr | 2 |
②リダイレクト操作
の種類 | オペレーター | 使用する |
---|---|---|
入力をリダイレクトする | < | 指定されたファイルからデータを読み取り、キーボード以外の入力 |
出力をリダイレクトする | >> | 出力結果は元のコンテンツを上書きします |
出力をリダイレクトする | >> | 出力はファイルの最後に追加されます |
標準エラー出力 | 2> | エラーメッセージを保存し、元のコンテンツを上書きします |
標準エラー出力 | 2 >> | 指定されたファイルにエラー情報を追加します |
混合出力 | &> | 標準出力とエラーコンテンツを同じファイルに保存します |
混合出力 | 2>&1 | 標準エラー出力を標準出力にリダイレクトします |
例えば:
echo 123456 > passwd;passwd fox --stdin < passwd;
SeLinuxがオンになっている場合、この操作は拒否されます
③パイプラインオペレーター
左側のコマンドの出力結果を右側のコマンドの入力オブジェクトとして使用します。同じコマンド行で複数のパイプ文字を使用できます。
命令 | 命令
④awkカラムの制御
Awk -F
コントロールバー、コントロール段落F:
は、セグメンテーション記号、コロン(書かれていない場合)、およびスペースのデフォルトの識別タブをコンテンツのセグメンテーションと同じように一重引用符で示し、print
印刷します
- NRは、現在処理されている行がどの行であるかを示します
- FNRは、現在処理されている行が現在処理されているファイルの最初の数行であることを示します
- NFは、現在の行に含まれるデータの列数を示します
シェル変数の役割
システムとユーザーが使用する必要がある特定のパラメーター値を格納するために使用されます
►カスタム変数:ユーザーが定義、変更、使用
►環境変数:固定名を使用します。システムによって事前設定されるか、ユーザーによって定義されます
►位置変数:ユーザー設定システムの変更に応じて変更
►事前定義された変数:組み込みの変数Bash
の一種。変更できません
①カスタム変数
新しい変数の定義は
通常、文字またはアンダースコアで始まり、大文字と小文字が区別されます。すべて大文字をお勧めします
变量名=变量值
変数の値を表示する echo $变量名
- 二重引用符:$記号を使用して他の変数値を引用できます
- 一重引用符:他の変数値を引用することは禁止されており、$は通常の文字と見なされます
- バッククォート:コマンドの置換、コマンドの実行後に出力結果を抽出します
②キーボードから読み取りを介して内容を入力し、変数に値を割り当てます
-p
ヒントを追加するために使用します
read -p "是否打响指" input
echo ${input}
可変スコープ
デフォルトでは、現在Shell
アクティブなコンテキストでのみ定義された新しい変数は、指定さ
れた内部コマンドexport
変数によってローカル変数と呼ばれ、グローバル変数をエクスポートします。これによりbash
、スイッチがまだ有効な環境変数である場合
export 变量名
export 变量名=变量值
整数変数の操作
演算子:+加算、-減算、*乗算、/除算、%剰余
一般的なアルゴリズム式
expr 变量1 运算符 变量2
+ - \*[乘法运算] /除法运算 %求模(取余)
num=$(expr 2 \* 2)
num=`expr 2\*2`
num=$((2*2))
num=$[2*2]
let num=2*2
i++ 相当于 i=$[i+1]
i-- 相当于 i=$[i-1]
i+=2 相当于 i=$[i+2]
特別なシェル変数
①環境変数
ユーザーの作業環境を設定するには、事前にシステムによって作成
:プロファイルを/etc/profile
、~/.bash+pro
使用env
環境に現在の環境変数を表示するコマンドを
変数USER
、ユーザー名を示しHOME
、ユーザのホームディレクトリを表すLANG
表現言語と文字セットを
②読み取り専用変数
変更されない変数値に使用されます
product=benet
readonly product
③位置変数
コマンドライン操作を実行する場合、最初のフィールドはコマンドまたはスクリプトプログラムの名前を表し、残りの文字列パラメーターは左から右の順に位置変数に割り当てられます。
vim start.sh
#!/bin/bash
echo $1
echo $2
echo $1 + $2
④所定の変数
$* $@ 表示命令或脚本要处理的参数
$* 把所有参数看成以空格分隔的一个字符串整体返回
11 22 33 44 为一个整体
$@ 加上双引号后会分割都是整体
11 22 33 44 他们每个都是整体
$# 表示命令或脚本处理参数的个数
$? 表示前一条命令或脚本执行后的返回状态码 [0为true非0为false]
time=backup-`date +%Y%m%d`.tgz
tar zcf $time $* &> /dev/null
echo "已执行 $0 个脚本,"
echo "共完成 $# 个对象的备份"
echo "具体内容包括: $*"
計算ツール
①bc操作を使用する
bash自体は浮動小数点演算をサポートしていません
echo "1+2" | bc
scale=整数 #保留小数个数
echo "scale=5;1.11111+2.22222" | bc
②awk操作を使用する
Awkはデフォルトで小数点以下5桁と有効数字6桁を表示します
num=$(awk 'BEGIN {print 5/3}')
echo $num