linux read01,Linux内置命令之read
一、read的作用
read能將用戶通過鍵盤輸入的字符串保存在后面所跟的變量里面
[root@TESTHOST?scripts]#?read?Num
1
[root@TESTHOST?scripts]#?echo?$Num
1
[root@TESTHOST?scripts]#?read?Num
123
[root@TESTHOST?scripts]#?echo?$Num
123
通過read可以輸入任何信息給腳本,也可以從命令行讀入多個(gè)值傳遞給變量
[root@TESTHOST?scripts]#?read?Num?Name?Year
1?Arvin?2015
[root@TESTHOST?scripts]#?echo?$Num?$Name?$Year
1?Arvin?2015
----------------------------------------------
[root@TESTHOST?scripts]#?read?Num?Name?Year
1?Arvin?2015?2014
[root@TESTHOST?scripts]#?echo?$Num
1
[root@TESTHOST?scripts]#?echo?$Name
Arvin
[root@TESTHOST?scripts]#?echo?$Year
2015?2014????#這里把最后兩個(gè)字符傳遞給了變量Year
二、read常用參數(shù)
-p():曾加提示信息 ? ?# 另echo -n 顯示信息后,不換行
-t:指定超時(shí)時(shí)間,在指定的時(shí)間內(nèi)read命令未交互,則超時(shí)退出
三、示例及練習(xí)
示例1:
#!/bin/bash
#
read?–p?“Input?a?character:”Char
case?$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]?:?"?YesNo
case?$YesNo?in
y|Y|[Yy]es)
echo?"Agreed,?proceed."?;;
n|N|[nN]o)
echo?"Disagreed,?can't?proceed."?;;
*)
echo?"Invalid?input."?;;
esac
例子3:寫一個(gè)腳本
1、顯示如下菜單給用戶:
m|M) show memory usages;
d|D) show disk usages;
q|Q) quit
2、如果用戶選擇了第一項(xiàng),則顯示內(nèi)存使用信息;
如果選擇了第二項(xiàng),則顯示磁盤掛載及使用相關(guān)信息;
如果是第三項(xiàng),退出,并顯示選擇退出;
其它任何內(nèi)容,均說明錯(cuò)誤選項(xiàng);
#!/bin/bash
#
cat?<
m|M)?show?memory?usages;
d|D)?show?disk?usages;
q|Q)?quit
EOF
read?-t?20?-p?"Press?a?choice:"?Key
if?[?-z?$Key?];?then
echo?"No?choice,quit."
Key=q
exit?3
fi
case?$Key?in
m|M)
free?-m
;;
d|D)
du?-lh
;;
q|Q)
echo?"Quit."
exit?5
;;
*)
echo?"Invalid?input."
exit?7
;;
esac
練習(xí)1:寫一個(gè)腳本,能接受參數(shù)gzip、bzip2或xz,而后能將/etc/目錄歸檔備份至/backup目錄,并以參數(shù)指定的形式壓縮存放;文件名稱包含腳本執(zhí)行時(shí)刻的時(shí)間
#!/bin/bash
#?Date:?2015-04-13
#?Description:
#?Version:?1.0
if?[?!?-e?/backup?];then????#這里可以用[?-d?/backup?]?||?mkdir?/backup?替代
mkdir?/backup
fi
read?-t?20?-p?"Press?a?command{gzip|bzip2|xz}:"?Command????#read,20秒超時(shí),給command賦值
Command=$1
if?[?-z?$1?];?then????#如果腳本給定的是空值,則默認(rèn)輸入gzip
Command=gzip
fi
case?$Command?in
gzip)
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)"????#每一個(gè)分支都有將執(zhí)行返回值賦值給Ret,當(dāng)Ret為0時(shí),即知道變量Command是gzip、bzip2、xz中哪一個(gè)
總結(jié)
以上是生活随笔為你收集整理的linux read01,Linux内置命令之read的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暴雪帝国辉煌能否延续
- 下一篇: 晕,我的VBSCRIPT语法还没过关