標籤:linux read
一、read的作用
read能將使用者通過鍵盤輸入的字串儲存在後面所跟的變數裡面
[[email protected] scripts]# read Num1[[email protected] scripts]# echo $Num1[[email protected] scripts]# read Num123[[email protected] scripts]# echo $Num123
通過read可以輸入任何資訊給指令碼,也可以從命令列讀入多個值傳遞給變數
[[email protected] scripts]# read Num Name Year1 Arvin 2015[[email protected] scripts]# echo $Num $Name $Year1 Arvin 2015
----------------------------------------------
[[email protected] scripts]# read Num Name Year1 Arvin 2015 2014[[email protected] scripts]# echo $Num1[[email protected] scripts]# echo $NameArvin[[email protected] scripts]# echo $Year2015 2014 #這裡把最後兩個字元傳遞給了變數Year
二、read常用參數
-p():曾加提示資訊 # 另echo -n 顯示資訊後,不換行
-t:指定逾時時間,在指定的時間內read命令未互動,則逾時退出
三、樣本及練習
樣本1:
#!/bin/bash#read –p “Input a character:”Charcase $Char in[0-9]) echo “A digit.” ;;[a-z]) echo “A lower.” ;;[A-Z]) echo “A upper.” ;;[[:punct:]]) echo “A punction.” ;;*) echo “A special char.” ;;esac
樣本2:
#!/bin/bash#read -p "Do you agree [yes|no]?: " YesNocase $YesNo iny|Y|[Yy]es) echo "Agreed, proceed." ;;n|N|[nN]o) echo "Disagreed, can‘t proceed." ;;*) echo "Invalid input." ;;esac
例子3:寫一個指令碼
1、顯示如下菜單給使用者:
m|M) show memory usages;
d|D) show disk usages;
q|Q) quit
2、如果使用者選擇了第一項,則顯示記憶體使用量資訊;
如果選擇了第二項,則顯示磁碟掛載及使用相關資訊;
如果是第三項,退出,並顯示選擇退出;
其它任何內容,均說明錯誤選項;
#!/bin/bash#cat << EOFm|M) show memory usages;d|D) show disk usages;q|Q) quitEOFread -t 20 -p "Press a choice:" Keyif [ -z $Key ]; then echo "No choice,quit." Key=q exit 3ficase $Key inm|M) free -m ;;d|D) du -lh ;;q|Q) echo "Quit." exit 5 ;;*) echo "Invalid input." ;;esac
練習1:寫一個指令碼,能接受參數gzip、bzip2或xz,而後能將/etc/目錄歸檔備份至/backup目錄,並以參數指定的形式壓縮存放;檔案名稱包含指令碼執行時刻的時間
#!/bin/bash# Date: 2015-04-13# Description:# Version: 1.0if [ ! -e /backup ];then #這裡可以用[ -d /backup ] || mkdir /backup 替代 mkdir /backupfiread -t 20 -p "Press a command{gzip|bzip2|xz}:" Command #read,20秒逾時,給command賦值Command=$1if [ -z $1 ]; then #如果指令碼給定的是空值,則預設輸入gzip Command=gzipficase $Command ingzip) tar czfP /backup/backupfile-`date +%F-%H-%M-%S`.tar.gz /etc/ Ret=$? ;;bzip2) tar cjfP /backup/backupfile-`date +%F-%H-%M-%S`.tar.bz2 /etc/ Ret=$? ;;xz) tar cJfP /backup/backupfile-`date +%F-%H-%M-%S`.tar.xz /etc/ Ret=$? ;;*) echo "Usage:`basename $0`{gzip | bzip2 | xz }." exit 5 ;;esac [ $Ret -eq 0 ] && echo "Backup etc successfully.($Command)" #通過每個迴圈分支的傳回值
本文出自 “Arvin Lau” 部落格,請務必保留此出處http://64314491.blog.51cto.com/2784219/1631952
Linux內建命令之read