[Linuxスタディノート29]シェルスクリプトの基本

1.シェルとは


Shellは、ユーザーがLinuxを使用するためのブリッジであるC言語で記述されたプログラムです。シェルはコマンド言語であると同時にプログラミング言語でもあります。シェルとは、ユーザーがオペレーティングシステムカーネルのサービスにアクセスするためのインターフェイスを提供するアプリケーションプログラムを指します。Ken Thompsonのshは最初のUnixシェルであり、WindowsExplorerは典型的なグラフィカルシェルです。


シェルスクリプト(シェルスクリプト)は、シェル用に作成されたスクリプトプログラムです。


2.シェルスクリプトの意味


  1. 将来繰り返し実行するために、コマンドの実行プロセスと実行ロジックを記録します
  2. スクリプトはホストをバッチで処理できます
  3. スクリプトはホストを定期的に処理できます

3.シェルスクリプトを作成します


#! :スクリプトが実行する必要のあるインタープリター、つまり使用されるシェルの種類をシステムに通知する合意済みのマークです。

#!/bin/bash:マジックナンバー(このスクリプトは/ bin / bashを使用して説明および実行します)


スクリプトヘッダーを自動的に追加しますvim ~/.vimrc

autocmd FileType yaml setlocal ai ts=2 sw=2 et
autocmd FileType sh set ai ts=4
autocmd BufNewFile *.sh,*.script call WESTOS()
"map <F4> ms:call WESTOS()<cr>'s

func WESTOS()
		call append(0,"###########################")
		call append(1,"##	Author:	zy")
		call append(2,"##	Version:")
		call append(3,"##	Create_Time:	".strftime("%Y/%m/%d"))
		call append(4,"##	Mail:	[email protected]")
		call append(5,"##	Info:	")
		call append(6,"###########################")
		call append(7,"")
		call append(8,"#!/bin/bash")
endfunc

テスト:拡張子sh(shはシェルを表す)を使用して新しいファイルtest.shを作成し、ヘッダーを自動的に生成します

ここに写真の説明を挿入



4.シェルスクリプトを実行します


操作方法1:

  1. 環境内で指定されたインタープリターを手動で起動します
  2. sh 脚本文件:run

ここに写真の説明を挿入

操作方法2:

現在の環境でシェル内のコマンドを直接実行します(新しいシェルを開かないでください)

source 脚本文件

. 脚本文件

ここに写真の説明を挿入


実行方法3:


スクリプトで指定されたシェルを開き、このシェル環境を使用してスクリプト内のコマンドを実行します

最初の行に通訳者情報を指定する必要はありません

  1. chmod +x 脚本文件名:実行許可を与える

  2. /脚本文件名または. /脚本文件名:実行

ここに写真の説明を挿入
ここに写真の説明を挿入



5.シェルスクリプトをデバッグします


shコマンド
-c文字列
コマンドは-cの後の文字列から読み取ります
-私
スクリプトの相互作用を実現する
-n
シェルスクリプトの構文を確認してください
-バツ
ステートメントごとのシェルスクリプトステートメントの追跡を実現します

sh -x 脚本文件:スクリプト実行プロセスを表示します

+	#运行指令
不带+	#命令运行的输出

ここに写真の説明を挿入



6.スクリプト演習


演習1:
「ip_show.shネットワークカード」を実行して、現在のIPを表示します


ifconfig $1 | awk '/inet\>/{print $2}'

ここに写真の説明を挿入


演習2:
host_messages.sh

  1. 現在のホスト名を表示し、現在のホストにipログインします
  2. 格式:
    ホスト名:XXXX IPアドレス:
    XXXX.XXXX.XXXX.XXXX
    ユーザー名:ルート

echo "hostname:	$HOSTNAME"
echo "ipaddress:	$(ifconfig 网卡 | awk '/inet\>/{print $2}')"
echo "username:	$USER"

ここに写真の説明を挿入

演習3:
clear_log.sh
は、このスクリプトの実行後にログをクリアできます


#检测是否是root用户执行此脚本
[ "$USER" = "root" ] || {
    
    
	echo -e "\033[31m Error: Please run script with root ! \033[0m"
	exit 1
	}
#清空日志
LOGS=`sed -n '/RULES/,$p' /etc/rsyslog.conf | awk '!/^#|^$/&&/var/{print $2}' | sed 's/-//g'`

for LOG in $LOGS
do
	> $LOG && echo -e "\033[32m $LOG is cleared ! \033[0m"
done

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_46069582/article/details/111543159