Linux內建命令之read

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.