CI: 継続的インテグレーション
日々のコードを継続的に統合し、コード全体の実行可能性をテストします。
CD: 継続的デリバリー
ユーザーエクスペリエンスなどのバグフィードバックに基づく継続的なバージョンアップ
shell
スクリプトの基本
シェルは、オペレーティングシステムとアプリケーションの間のコマンド変換ツールです。
- シェルは、コマンドを一行ずつ実行したり、確認のために一行ずつ実行したり、スクリプトとして実行したりするのに使うことができます。
- スクリプトは、シェルコマンドをスクリプトファイルに記述し、スクリプトファイルを実行することで実行されます。
スクリプトの指定
Windowsは[.sh]ファイル、Linuxはvi/vimで終了し、スクリプトは上から順にコマンドを実行します。
#!/bin/bash
# これは一時的なシェルスクリプトである
echo 'nihao'
- スクリプトを実行するパスには主に相対パスと絶対パスがあり、絶対パスは主に仕事で使われます:
bash /path/to/script-name /bin/bash /path/to/script-name
その他の方法もご利用いただけます。
/path/to/script-name ./script-name
source script-name . script-name
shellの変数は
シェルの変数は主にローカル変数、グローバル変数、組み込み変数に分類されます。
ローカル変数は、通常の変数とコマンド変数に分けられます。
- ローカル変数:
変数名 = "変数値"
フォーカス: 変数値の範囲内でパースできる変数Aがある場合、まず変数Aをパースし、Aの結果と他の内容を組み合わせて全体にし、その値を変数Bに再代入する。数値は引用符で囲まず、他のデフォルトは二重引用符で囲む。- コマンド変数:
変数名 = $
プロセスを実行します:
1 $()スコープ付きコマンド 2コマンドの結果は新しい変数名Aに代入される。グローバル変数:
エクスポート変数=値
envで全てのグローバル変数を表示することもできますし、env | grepでグローバル変数を表示することもできます。
組み込み変数
| $0 | 現在実行中のシェル・スクリプト・ファイル名(スクリプト・パスを含む)を取得します。 |
| $n | n=1...9、nが0の場合はスクリプトのファイル名を意味し、nが9より大きい場合は中括弧${10}で囲む必要があります。 |
| $# | 現在のシェルコマンドラインの引数の総数を取得します。 |
| $? | 最後に実行された命令の戻り値を取得 |
変数の表示と変数のキャンセル
- 変数の表示
"${変数名}"
二重引用符が外側にある場合 echo " dsa dsafsa dsafsa ${変数名} f "
- アンセット変数:変数名のアンセット
文字列のインターセプトとデフォルト値
- 文字列インターセプトのフォーマット:${変数名:開始位置:長さ}。
${file:0:5} 最初の文字から始まり、5文字をインターセプトする。
${file::5} 最初の文字から始まり、5文字をインターセプトする。
${file:5:5} 6文字目から、5文字を割り込む。
${file:5} 6文字目から、以下のすべての文字をインターセプトする。
${file:0-5} 5文字目から、以下のすべての文字をインターセプトする。
${file:0-6:3} 6文字目から、次の3文字をインターセプトする。
- デフォルト値の形式:-変数名:-デフォルト値または{変数名:+デフォルト値}。
#!/bin/bash
# パッケージ選択デモ
a="$1"
echo "選択したパッケージは次のとおりである。${a:-1}"
実行結果:デフォルトの出力パッケージ1にパラメータなし、パラメータでパッケージ数を出力する
変数名:-デフォルト}。
変数aが内容を持つ場合、変数aの値を出力します。
変数aに内容がない場合、デフォルトの内容が出力されます。
#!/bin/bash
# 結婚年齢選択デモ
a="$1"
echo "結婚適齢期は${a:+22}"
変数名:+デフォルト値}。
a が値を持つかどうかに関係なく、デフォルトの内容を出力します。
shell
テスト文
- test 条件式
- [条件式 ]の場合、中括弧の両側にはスペースを入れなければなりません。
論理式
オーダー1 & & オーダー2
コマンド1が成功したら、コマンド2を実行します。
コマンド1の実行に失敗した場合、コマンド2も実行されません。
コマンド1|コマンド2
コマンド1が正常に実行された場合、コマンド2は実行されません。
コマンド1の実行に失敗した場合は、コマンド2が実行されます。
ファイル式
- -入力がファイルかどうかを判断します。
例
# [ -f weizhi.sh ] && echo "はファイル"
はファイル
# [ -f weizhi.sddh ] || echo "ファイルではない"
- -d 入力がディレクトリかどうかを判断します。
- -入力が実行可能かどうかを判断します。
数値演算子
n1-eq n2 イコール
n1-gt n2 より大きい
n1 -lt n2 以下
n1 -ne n2 は以下と等しくありません。
- 文字列の比較
str1 == str2 str1とstr2の文字列は同じです。
str1 != str2 str1とstr2の文字列は同じ内容ではありません!はその逆を意味します。
if
文法形式:
if [ 条件]
then
elif [ 条件2]
then
else
fi
case
文法形式:
case 変数名
;;
;;
;;
esac
注意
最初の行のキーワードはcase、最後の行のキーワードはesacである。
)を選択する
選択された各実行文の最後にセミコロンを2つ付ける;
case 文は比較的簡潔で、コードが少なく、複数の条件がある場合よりも見やすくなります。
forループ文
文法形式:
#!/bin/bash
# forステートメントの使用例、ファイルをトラバースする
for i in $(ls /root)
do
echo "${i}"
done
while
文法形式:
while 条件
do
ステートメントを実行する
done
注意
条件の型:
[[ 文字列式]]関数の書式:スクリプト関数引数渡し)
条件が満たされている限り、関数は実行し続ける
until
文法形式:
until 条件
do
ステートメントを実行する
done
注意
条件の型:
[[ 文字列式]]関数)
ループは条件が満たされない限り続く
複雑なプロセス制御文
機能が複雑なプロセス制御ステートメント
単純な関数
関数形式:
関数名(){
}
関数を呼び出す:
注意: 関数を呼び出さない場合、その関数は実行されない
例: パラメータを渡すスクリプト関数
#!/bin/bash
# 関数渡しのデモンストレーション
# パラメータを渡す関数を定義する
dayin(){
echo "wode mingzi shi $1"
}
# 関数の受け渡し
dayin $1





