$ bash < ex1
読み込むことができます
例1プログラムして実行する
その一般的な形式は次のとおりです。
$ bash スクリプト名 [パラメータ]
例えば:
$ bash ex2 /usr/meng /usr/zhang
実行プロセスは前の方法と同じですが、この方法の利点は、スクリプト名の後にパラメータを指定できることです。これにより、パラメータ値をプログラム内のコマンドに渡すことができるため、シェル スクリプトは関数と同じように、複数の状況を処理します。呼び出し時に、特定の問題に応じて、対応する実際のパラメータを渡すことができます。
現在のシェル (次から始まる) で開始すると、
·という意味) シェル スクリプトを実行するには、次の単純な形式を使用できます。
$・ex3 [パラメータ]
シェル スクリプトのアクセス許可を実行可能に設定し、プロンプトで直接実行します。
具体的な方法:
$ chmod a+x ex4$ ./ex4
この要件では、シェル スクリプトの先頭でスクリプトを実行する特定のシェルを指定します。たとえば、
/bin/bash:
#!/bin/bash
シェルはユーザーが入力したコマンド(スクリプト名)を受け取り、解析します。ファイルが実行可能としてマークされているが、コンパイルされたプログラムではない場合、シェルはそれをシェル スクリプトであるとみなします。シェルは内容を読み取り、解釈して実行します。したがって、ユーザーの観点から見ると、シェル スクリプトの実行は通常の実行可能ファイルの実行と似ています。
したがって、ユーザーが開発したシェル スクリプトは、コマンド検索パス (通常は
/bin、
/usr/binなど)、通常のコマンドと同様に使用します。このようにして、独自の新しいコマンドを開発します。用意したシェルスクリプトを繰り返し使用する場合は、この方法の方が便利です。
コマンドの実行結果を変数に代入できます。コマンド置換には 2 つの形式があります。1 つはバッククォートを使用してコマンドを引用するもので、その一般的な形式は次のとおりです。
コマンドリスト。
たとえば、現在の作業ディレクトリの絶対パス名を変数 dir に保存し、次のコマンド ラインを入力します。
$ dir=`pwd`
別の形式は次のとおりです。
$(コマンドリスト)。上記のコマンドラインは次のように書き換えることもできます。
$dir=$(パスワード)
バッシュ1 次元配列のみが提供され、配列のサイズは制限されません。 C言語と同様に、配列要素の添字には0から始まる番号が付けられます。配列内の要素を取得するには、添え字を使用します。添字には整数または算術式を使用でき、その値は 0 以上である必要があります。ユーザーは代入ステートメントを使用して、配列変数に値を割り当てることができます。
配列要素に値を割り当てる一般的な形式は次のとおりです。
配列名 [添字] = 値、例えば:
$ city[0]=北京$ city[1]=上海$ city[2]=天津
も使用できます
宣言するこのコマンドは明示的に配列を宣言します。一般的な形式は次のとおりです。
$ 宣言 - 配列名
配列要素の値を読み取るための一般的な形式は次のとおりです。
${配列名[添字]}、例えば:
$ echo ${city[0]}北京
配列の各要素は、上記の方法を使用して要素ごとに割り当てることも、組み合わせて割り当てることもできます。配列を定義し、それに初期値を割り当てる一般的な形式は次のとおりです。
配列名 = (値 1 値 2 ... 値 n)
各値はスペースで区切られます。例えば:
$ A=(これはシェルスクリプトの例です)$ echo ${A[0]} ${A[2]} ${A[3]} ${A[6]}これはスクリプトの例です$ echo ${ A[8]}
値テーブルには初期値が7つあるので、
あ要素数も7です。
A[8]割り当てられた配列を超えています
あ範囲内では、事前に値が割り当てられていないため、新しい要素とみなされます。その値は空の文字列です。
配列要素の添字が指定されていない場合、配列名は配列要素を添字 0 で表します。たとえば、
市と同等です
都市[0]。
使用
*または
@添字を付けると、配列内のすべての要素が置き換えられます。
$ echo ${A[*]}これはシェルスクリプトの例です
$ echo ${#A[*]}7
2 つの数値の合計を求めるシェルを作成したい場合、どのように実装できますか?パラメーター受け渡しの使用を導入するには、次のようなスクリプトを作成します。
$ cat > アドレットの合計=$1+$2echo $sum
保存後、次を実行します。
$ chmod a+x ./add$ ./add 5 1015
5 と 10 が渡されることがわかります。
1ドルそして
2ドル、これはシェル独自のプリセットパラメータ順序です。実際、最初に変数を定義してから渡すこともできます。
たとえば、上記のスクリプトを変更して次を取得します。
sum=$X+$Yecho $sum とします
再度実行します。
$ X=5 Y=10 ./add15
こちらも正しい結果が得られることが分かります。
環境変数をエクスポートします。
$エクスポートopid=True
ログイン後に有効にしたい場合は、これを直接追加できます。
/etc/プロファイルまたは
~/.bashrc内部。
通過できる
読むたとえば、ユーザーが値を入力して表示するのを待つなど、変数値を読み取るには、次のようにします。
$ read -p 値を入力してください: input ; echo 値を入力してください: $input 値を入力してください: 21500 値を入力してください: 21500
一部の重要なシェル変数は割り当て後に変更しないでください。そのため、それらを次のように設定できます。
読み取り専用:
$ oracle_home=/usr/oracle7/bin$ readonly oracle_home
文法:
テスト式式が true の場合は true を返し、それ以外の場合は false を返します。
まず、数値比較で使用される一般的な比較記号を示します。
-eg =; -ne !=; -ge >=;
$ テスト var1 -gt var2
ファイルが読み取り可能、書き込み可能、および実行可能であるかどうかは、それが通常のファイルであるか、ディレクトリであるかによって決まります。
-r; -x;
$ テスト -r ファイル名
文字列の長さはゼロです。
-z; ゼロ以外:-n、のように:
$ テスト -z s1
文字列の場合
s1長さはゼロで、true を返します。
等しい
s1=s2; 等しくないs1!=s2
文字列を比較する別の方法もあります (辞書順に比較できます)。
$ if [[ 'abcde' < 'abcdf' ]]; then echo はい、予想通りです、はい;
このコマンドで実行できる操作は次のとおりです。
算術演算:
+ - * / %;論理演算:= ! < <= > >=
のように:
$ i=5;expr $i+5
加えて、
紀元前は、算術計算を実行できるコマンド ライン電卓です。
もしコマンド例: 最初のパラメータが一般的なファイル名の場合は、ファイルをページ単位で出力します。それ以外の場合、ディレクトリ名を入力し、ディレクトリ内のすべてのファイルを出力します。ディレクトリでない場合は、プロンプトを表示します。関連情報。
if test -f $1then pr $1>/dev/lp0elif test-d $1then (cd $1;pr *>/dev/lp0)else echo $1 はファイルでもディレクトリでもありませんfi
場合このコマンドはパターン マッチングに基づく多方向分岐コマンドであり、ユーザーのキーボード入力に基づいて次にどのコマンド セットが実行されるかを決定します。
while [ $reply!=y ] && [ $reply!=Y ] #これから学習するループ ステートメント do echo n続行しますか?(Y/N)c read Reply #キーボードのケースを読み込む $replay in ( y|Y) Break;; #ループを終了します (n|N) echo nn終了n 0 を終了します;; *) echo nny または n と答えてください; #内側のループに直接戻って開始してくださいエサクドンを続ける
文法:
while/until コマンドリスト 1do コマンドリスト 2done
違いは、前者がコマンド テーブル 1 を実行した後、終了ステータスが 0 の場合に、
する次のコマンド リスト 2 は開始点に戻り、後者がコマンド リスト 1 を実行した後、終了ステータスが 0 以外の場合にのみ同様の操作を実行します。上記と同じ例です。
文法:
文字列テーブルの変数名に対して do コマンド テーブルが完了しました
例:
FILE=test1.c myfile1.f pccn.hfor i in $FILEdo cd ./tmp cp $i $i.old echo $idone コピーしました
次に、シェルでの関数の使用法を見てみましょう。まず例を見てみましょう。関数を作成して、それを呼び出して表示します。
こんにちは世界!
$ cat > show# 関数定義 function show{ echo $1$2;}H=Hello,W=World!# 関数を呼び出し、2 つのパラメータ H と W を渡しますshow $H $W
デモ:
$ chmod 770 show$./showHello,World!
怪しいものを見ましたか?
$ ショー $H $W
関数名の後に実際のパラメータを直接続けることができます。
実パラメータの順序は「仮想パラメータ」に対応します。
$1、$2、$3…
注: パラメータを渡したい場合、パラメータの途中にスペースがある場合はどうすればよいでしょうか? まずは試してみてください。
表示する
こんにちは世界(2 つの単語の間にはスペースがあります)
function show{ echo $1}HW=Hello Worldshow $HW
直接の場合
$HWを表示、絶対に不可能です。
1ドル受け取っただけ
こんにちは、したがって結果のみが表示されます
こんにちは理由は、文字列変数を使用する必要があるためです。それを封じ込めてください。
興味があれば学び続けてください!
など、たくさんの強力なものがあなたを待っています。
カット、
式、
セド、
ああ等