BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

Linux BASHスクリプティングの世界を航海する–パートIII

シェルスクリプト」の以前の次の記事 ‘シリーズは高く評価されたため、この記事を書いているのは、終わりのない学習プロセスを拡張するためです。

Linux BASHスクリプティングの世界を航海する–パートIII
  1. 基本的なLinuxシェルスクリプト言語のヒントを理解する–パートI
  2. Linux初心者がシェルプログラミングを学ぶための5つのシェルスクリプト–パートII
Bashキーワード

キーワード コンピュータ言語にとって特別な意味を持つ単語または記号です。次の記号と単語は、バッシュにとって特別な意味を持っています 引用符で囲まれておらず、コマンドの最初の単語である場合。

! 			esac 			select 		} 
case 			fi 			then 		[[ 
do 			for 			until 		]] 
done 			function 		while 		elif
if 			time 			else 		in 		{

ほとんどのコンピュータ言語とは異なり、バッシュ キーワードを変数名として使用できるようにします これによりスクリプトが読みにくくなる可能性がありますが。スクリプトを理解しやすくするために、変数名にキーワードを使用しないでください。

コマンドはシェルに$として実装されます (指図)。コマンドのフルパスを含める必要がある場合があります。例: $(/ bin / date) 、正しく実行するため。

whereis」を使用すると、特定のプログラムのパスを知ることができます。 ' 指図。例:日付

[[email protected] /]# whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

今のところこれで十分です。これらの理論については、今はあまり話しません。スクリプトに来る。

現在の作業ディレクトリを移動する

実行中にスクリプトの最後に数値を入力するだけで、現在の作業ディレクトリから任意のレベルに移動できます。

#! /bin/bash 
LEVEL=$1 
for ((i = 1; i <= LEVEL; i++)) 
do 
CDIR=../$CDIR 
done 
cd $CDIR 
echo "You are in: "$PWD 
exec /bin/bash

上記のコードを「up.sh」として保存します 「、デスクトップ上。実行可能にします( chmod 755 up.sh )。実行:

./ up.sh 2 (現在の作業ディレクトリを2レベル上に移動します。)
./up.sh 4 (現在の作業ディレクトリを4レベル上に移動します。)

用途と適用分野

中のフォルダ内にフォルダを含む大きなスクリプトの場合…ライブラリを含む 、バイナリアイコン実行可能ファイル 、など別の場所にいる場合、開発者はこのスクリプトを実装して、非常に自動化された方法で目的の場所に移動できます。

:Forは上記のスクリプトのループであり、ループの値が真になるまで実行を続けます。

サンプル出力
[[email protected] /]# chmod 755 up
[[email protected] /]# ./up.sh 2
You are in: /

[[email protected] /]# ./up.sh 4 
You are in: / 

[[email protected] /]#

up.shをダウンロード

ランダムファイルまたはフォルダを作成する

重複する可能性のないランダムなファイル(フォルダ)を作成します。

#! /bin/bash

echo "Hello $USER";
echo "$(uptime)" >> "$(date)".txt
echo "Your File is being saved to $(pwd)"

これは単純なスクリプトですが、機能はそれほど単純ではありません。

  1. エコー ‘:引用符で囲まれたすべてのものを印刷します。
  2. $ ‘:シェル変数です。
  3. >> ‘:出力は日付の出力にリダイレクトされます コマンドの後にtxt 拡張機能。

日付の出力を知っています コマンドは日付です 、および時間 時間分、 と一緒に 。したがって、ファイル名が重複することなく、整理されたファイル名で出力を取得できます。ユーザーがタイムスタンプで作成されたファイルを必要とする場合に非常に役立ちます。 将来の参考のために。

サンプル出力
[[email protected] /]# ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

デスクトップで作成されたファイルを、今日の日付と現在の時刻で表示できます。

[[email protected] /]# nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt 
13:51:52 up  3:54,  1 user,  load average: 0.09, 0.12, 0.08

上記のスクリプトのより詳細な実装を以下に示します。これは、上記の原則に基づいて機能し、 Linuxのネットワーク情報を収集するのに非常に役立ちます。 サーバー。

randomfile.shをダウンロード

ネットワーク情報を収集するためのスクリプト

Linuxでネットワーク情報を収集します サーバ。スクリプトが大きすぎるため、コード全体とスクリプトの出力をここに投稿することはできません。したがって、以下のダウンロードリンクを使用してスクリプトをダウンロードし、自分でテストすることをお勧めします。

lsb-coreをインストールする必要がある場合があります パッケージおよびその他の必要なパッケージと依存関係。 適切 またはYum 必要なパッケージ。明らかに、ルートである必要があります ここで使用されるコマンドのほとんどはrootとして実行されるように構成されているため、スクリプトを実行します。 。

サンプル出力
[[email protected] /]# ./collectnetworkinfo.sh  

The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to [email protected]_provider.com. ktop

スクリプト内の上記のメールアドレスを変更して、メールで送信することができます。自動生成されたファイルを表示できます。

collectnetworkinfo.shをダウンロード

大文字を小文字に変換するスクリプト

大文字を変換するスクリプト 小文字 出力をテキストファイル「small.txt」にリダイレクトします 」これは必要に応じて変更できます。

#!/bin/bash 

echo -n "Enter File Name : " 
read fileName 

if [ ! -f $fileName ]; then 
  echo "Filename $fileName does not exists" 
  exit 1 
fi 

tr '[A-Z]' '[a-z]' < $fileName >> small.txt

上記のスクリプトは、大文字からシングルクリックで任意の長さのファイルの大文字小文字を変換できます 小文字 必要に応じて、ほとんど変更を加えずに、その逆も可能です。

サンプル出力
[[email protected] /]# ./convertlowercase.sh  
Enter File Name : a.txt 

Initial File: 
A
B
C
D
E
F
G
H
I
J
K
...

新しいファイル( small.txt )出力:

a
b
c
d
e
f
g
h
i
j
k
...

convertlowercase.shをダウンロード

簡単な電卓プログラム

#! /bin/bash 
clear 
sum=0 
i="y" 

echo " Enter one no." 
read n1 
echo "Enter second no." 
read n2 
while [ $i = "y" ] 
do 
echo "1.Addition" 
echo "2.Subtraction" 
echo "3.Multiplication" 
echo "4.Division" 
echo "Enter your choice" 
read ch 
case $ch in 
    1)sum=`expr $n1 + $n2` 
     echo "Sum ="$sum;; 
        2)sum=`expr $n1 - $n2` 
     echo "Sub = "$sum;; 
    3)sum=`expr $n1 \* $n2` 
     echo "Mul = "$sum;; 
    4)sum=`expr $n1 / $n2` 
     echo "Div = "$sum;; 
    *)echo "Invalid choice";; 
esac 
echo "Do u want to continue (y/n)) ?" 
read i 
if [ $i != "y" ] 
then 
    exit 
fi 
done
サンプル出力
[[email protected] /]# ./simplecalc.sh 

Enter one no. 
12 
Enter second no. 
14 
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
1 
Sum =26 
Do u want to continue (y/n)) ? 
y
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
3 
mul = 14812
Do u want to continue (y/n)) ? 
n

simplecalc.shをダウンロード

それで、あなたはそのような単純な方法で計算として強力なプログラムを作成することがいかに簡単であるかを見ましたか?それで終わりではありません。管理の観点からの広い視点をカバーする、このシリーズの少なくとももう1つの記事を作成します。

それは今のところすべてです。読者であり、最高の批評家であることは、この記事でどれだけ楽しんだか、そして将来の記事で何を見たいかを私たちに伝えることを忘れないでください。コメントでどんな質問でも大歓迎です。それまで健康を維持する 、安全 および調整済みいいね および共有 私たちと私たちが広がるのを手伝ってください。


  1. シェルスクリプトでの「Linux変数」の理解と記述–パート10

    Linuxシェルスクリプト言語は常にホットな話題であり、将来的には常にそうなるでしょう。シェルスクリプト言語は魔法のようで、他の言語と同じようにスクリプト言語でプログラムを実行するのはとても簡単です。ただし、私たちが行っていることと、その結果が期待されることについての深い知識が必要です。 私たちが読者のために書いたすべてのシェルスクリプトの記事は、最後の記事「Linux変数の洞察」を含めて高く評価されています。前回の記事を新しいレベルに拡張します。 変数属性 Linux環境の各変数には特定のオプションがあり、それらは「属性」と呼ばれます。これらのオプションまたは属性は、オンにすることがで

  2. シェルスクリプト言語でのLinux「変数」の洞察–パート9

    Linuxシェルスクリプトに関する一連の記事はすでに書いています。 その時は暖かく迎えられ、今でも非常に重要でした。シェルスクリプトに関する記事のコレクションへのリンクは次のとおりです。 Linuxシェルスクリプトを学ぶ この記事では、変数を確認します。 、その実行とシェルスクリプトでの実装。 出力の保存 コマンドの出力は、標準出力またはファイルにリダイレクトでき、変数に保存することもできます。コマンドの出力が画面に収まらないほど大きい場合は、ファイルへの出力を変数に保存するオプションのみが残ります。出力を変数に保存することの利点の1つは、検査速度が速いことです。変数はメモリに保存さ