Shell 指令碼實踐

2021-09-06 22:25:38 字數 2172 閱讀 7076

1. 指令碼判斷命令輸出是否為空

(1)判斷字串為空

if [ "$str" =  "" ] 

if [ x"$str" = x ]

if [ -z "$str" ] (-n 為非空)

注意:都要代雙引號,否則有些命令會報錯,養成好習慣吧!  

2.輸入y/n

可以使用判斷符號進行資料的判斷,如檢查某變數是否為空 [ -z $shell ],需要注意的是中括號(「」)內的元件必須以空格隔開。有以下指令碼:

#!/bin/bash

read -p "input you choice(y/n):" choice

[ "$choice" == "y" ] || [ "$choice" == "y" ] && echo "ok,continue" && exit 0

[ "$choice" == "n" ] || [ "$choice" == "n" ] && echo "oh,interrupt!" && exit 0

echo "i don't know what is your choice" && exit 0

#! /bin/sh

echo "is it morning? please answer yes or no."

read yes_or_no

if [ "$yes_or_no" = "yes" ]; then

echo "good morning!"

elif [ "$yes_or_no" = "no" ]; then

echo "good afternoon!"

else

echo "sorry, $yes_or_no not recognized. enter yes or no."

exit 1

fiexit 0

(3)while條件迴圈

和c語言類似。比如乙個驗證密碼的指令碼:

#! /bin/sh

echo "enter password:"

read try

while [ "$try" != "secret" ]; do

echo "sorry, try again"

read try

done

下面的例子通過算術運算控制迴圈的次數:

#! /bin/sh

counter=1

while [ "$counter" -lt 10 ]; do

echo "here we go again"

counter=$(($counter+1))

done

(3)case 和 while 結合

#!/bin/bash

while : :表示真,一直迴圈

do 要迴圈執行的命令

echo -n "enter any number [1-5]:" 輸入序號1-5

read nu 設定read的變數

case $nu in 進行選擇,輸入的要是1-5的數字

1|2|3|4|5)

echo "enter anumber 1 and 5" 就迴圈這一行,讓你不停的輸入1-5

;;*) 如果輸入的不是1-5的數字

echo -n "wrong number, continue (y/n?:)" 詢問你是否繼續

read con 設定read的變數

case $con in 進行選擇,看是不是y|yes|y|yes這幾個

y|yes|y|yes)

continue 如果是,那麼就跳過,讓你重新輸入,如果不是

;;*) 那麼就執行這個break退出迴圈

break

;;esac

esac

done

Shell 指令碼實踐

shell 用 c 語言編寫的程式,既是一種命令列語言,又是一種程式語言,用 shell 編寫的稱為指令碼程式 shell script 1 作為可執行程式 chmod x test.sh test.sh 2 作為直譯器引數 sh test.sh我們可以在執行指令碼時,傳遞引數,指令碼內獲取引數的格...

shell指令碼實踐3 2018 03 29

1.echo 變數 1.txt 可以實現向檔案中輸入資訊 command 1.txt 可以實現向檔案中輸入資訊,是將命令執行的結果輸入檔案 2.wc l 1.txt 此命令統計檔案行數時,顯示結果為兩列,一列是行數,一列是檔名,如果只利用行數,需要用cut將其獲取出來 3.將從windows複製過來...

Shell指令碼實踐整理

準備 建立測試檔案 1.按行讀取檔案內容,且過濾包含 字元的行 bin bash file name test cat file name while read line do 過濾配置檔案中包含 的行if then continue fi echo done 結果 hrx test shell t...