linux的shell指令碼學習筆記(二)

2021-08-27 05:06:53 字數 4469 閱讀 4590

標記:開始學習while迴圈

檢視本地的8080埠的應用是否已啟用:

curl -s -o index.jsp -m 2 localhost:8080/shop/index.jsp

#!/bin/bash

n=0while [ $n -lt 5 ]; do

let n++

echo $n

done

#迴圈讀取檔案的一行,然後輸出 read命令讀取到資料,狀態是0,條件為真,讀取不到資料則條件為假

cat ./catalina.out | while read line ; do

echo $line

done

#另一種方法

while read line2 ; do

echo $line2

done <./catalina.out

#永真條件的三種表示

while :; do

echo "yes"

done

while true ; do

echo "yes"

done

while [ 1 -eq 1 ] ; do

echo "yes"

done

#跳出當前迴圈和終止迴圈

continue break

n2=0

while true; do

let n2++

if [ $n2 -eq 5 ]; then

break

fiecho $n2

done

#continue

n3=0

while [ $n3 -lt 5 ]; do

let n3++

if [ $n3 -eq 3 ]; then

continue

fiecho $n3

done

case的學習實踐:啟動tomcat指令碼  ./tomcat.sh 8080 start 

#!/bin/bash

# function :scripts is for tomcat stop/start 8080-8089

tomcat_bash_dir=/u02

function usage()

" exit 1

} case $2 in

start)

if [ $1 == all ]; then

for i in $(seq 8080 8089)

do [ -f $tomcat_bash_dir/tomcat$i/bin/shutdown.sh ] && $tomcat_bash_dir/tomcat$i/bin/shutdown.sh >/dev/null 2>&1

[ -f $tomcat_bash_dir/tomcat$i/bin/startup.sh ] && $tomcat_bash_dir/tomcat$i/bin/startup.sh

done

else

[ -f $tomcat_bash_dir/tomcat$1/bin/shutdown.sh ] && $tomcat_bash_dir/tomcat$1/bin/shutdown.sh >/dev/null 2>&1

[ -f $tomcat_bash_dir/tomcat$1/bin/startup.sh ] && $tomcat_bash_dir/tomcat$1/bin/startup.sh

fi;;

stop)

echo "stop!"

if [ $1 == all ] ; then

for i in $(seq 8080 8089)

do [ -f $tomcat_bash_dir/tomcat$i/bin/shutdown.sh ] && $tomcat_bash_dir/tomcat$i/bin/shutdown.sh >/dev/null 2>&1 && echo "stop $i"

done

else

[ -f $tomcat_bash_dir/tomcat$1/bin/shutdown.sh ] && $tomcat_bash_dir/tomcat$1/bin/shutdown.sh >/dev/null 2>&1 && echo "stop $1"

fi;;

*)usage

;;esac

exit 0

select和unitl語句的語法:

select variable in list 

do迴圈體,可以用break終止

done

主要作用:用於建立選單,按數字順序排列list,使用者輸入儲存在變數reply中

#!/bin/bash

ps3="提示語:"

select menu in start stop restart quit

do # $reply 儲存的是所選選單的第幾項

# case $reply in

case $menu in

start)

echo "the tomcat while be start"

;;stop)

echo "the tomcat while be stop"

;;restart)

echo "the tomcat while be restart"

;;quit)

break

;;*)

echo "no the option"

esac

done

ps3="提示語:"

select menu in start stop restart quit

do # $reply 儲存的是所選選單的第幾項 如輸入 1 則執行start

case $reply in

# case $menu in

1)echo "the tomcat while be start"

;;2)

echo "the tomcat while be stop"

;;3)

echo "the tomcat while be restart"

;;4)

break

;;*)

echo "no the option"

esac

done

unitl 迴圈條件 ; do

迴圈體done

使用:迴圈條件為真時,一直執行迴圈體;為假時,結束迴圈(和while相反)

檢測8080埠,一旦發現就殺掉8080的程序

#!/bin/bash

until ps -ef |grep 8080|grep -v grep &> /dev/null; do

sleep 0.5

done

kill -9 $(ps -ef|grep -ef 8080|grep -v grep|awk '')

until pgrep -u tomcat &> /dev/null; do

sleep 0.5

done

pkill -9 -u tomcat

第五章:函式和陣列

函式的定義:function  fun()

fun#返回值只能是0-255 的數字

func()

func

echo $?

#遞迴呼叫

test()

test

#遞迴使用時,一定要有終止條件 深水炸彈

bomb() ;

bomb陣列:陣列元素間使用空格作為分割符

格式: array=(元素 1 元素 2 元素 3 ...)  

array=(a b c)

array=($(command))

array[下標]=元素

#!/bin/bash

arr=(1 2 3 4)

#獲取陣列長度 字串的長度 $

echo $

#獲取陣列所有元素

echo $

#獲取元素下標:

echo $

#獲取對應下標的元素

echo $

#新增元素

arr[4]=e

#新增多個元素,陣列和陣列可以直接加,構成乙個新陣列

arr+=(f g h)

#刪除元素

unset arr[0]

#刪除陣列

unset array

#遍歷陣列,依次啟動tomcat

ports=(8080 8081 8082 8083)

for port in $ ; do

./starttomcat $port

done

for (( i=0;i<$ ; i++)) ; do

echo $

done

Linux學習(Shell指令碼)

bin bash 必須的,指出shell的型別 注釋 變數控制 vi mkdir.sh bin bash this is mkdir cd home mkdir shelltest echo shelltest is created.將檔案賦予可執行的許可權 指令碼檔案 注意 1 檔名 在當前目錄下...

linux學習 shell指令碼

shell是命令和硬體之間的橋梁 shell的工作方式分為兩種 互動式 批處置 互動式 使用者一次輸入一條命令,shell翻譯並執行一條 批處理 使用者將多條命令構成乙個shell指令碼,執行指令碼時,shell一次執行全部的命令,shell指令碼是將各種命令通過邏輯語句組合而成的程式 1 檢視系統...

Linux學習之shell指令碼

第一行 bin bash 標記指令碼的直譯器 指令碼 bin bash echo hello world 賦予執行許可權 chmod x test.sh 執行指令碼 test.sh 定義變數時不需要 符號 td date y m d 1.變數名和符號之間不能有空格 2.首個字元必須為字母 3.中間不...