adb shell读取返回值_shell学习笔记03(函数amp;shell工具amp;面试题)
自定義函數(shù)
1.基本語法
[ function ] funname[()] {Action;[return int;] } funname2.經(jīng)驗(yàn)技巧
(1)必須在調(diào)用函數(shù)地方之前,先聲明函數(shù),shell腳本是逐行運(yùn)行。不會(huì)像其它語言一樣先編譯。
(2)函數(shù)返回值,只能通過$?系統(tǒng)變量獲得,可以顯示加:return返回,如果不加,將以最后一條命令運(yùn)行結(jié)果,作為返回值。return后跟數(shù)值n(0-255)
3.案例實(shí)操
(1)計(jì)算兩個(gè)輸入?yún)?shù)的和
touch fun.sh vim fun.sh#!/bin/bash function sum() {s=0s=$[ $1 + $2 ]echo "$s" }read -p "Please input the number1: " n1; read -p "Please input the number2: " n2; sum $n1 $n2;chmod 777 fun.sh ./fun.sh Please input the number1: 2 Please input the number2: 5 7Shell工具(重點(diǎn))
cut
cut的工作就是“剪”,具體的說就是在文件中負(fù)責(zé)剪切數(shù)據(jù)用的。cut 命令從文件的每一行剪切字節(jié)、字符和字段并將這些字節(jié)、字符和字段輸出。
1.基本用法
cut [選項(xiàng)參數(shù)] filename
說明:默認(rèn)分隔符是制表符
2.選項(xiàng)參數(shù)說明
選項(xiàng)參數(shù) 功能
-f 列號(hào),提取第幾列
-d 分隔符,按照指定分隔符分割列
3.案例實(shí)操
(0)數(shù)據(jù)準(zhǔn)備
touch cut.txt vim cut.txt dong shen guan zhen wo wo lai lai le le(1)切割cut.txt第一列
cut -d " " -f 1 cut.txt(2)切割cut.txt第二、三列
cut -d " " -f 2,3 cut.txt(3)在cut.txt文件中切割出guan
cat cut.txt | grep "guan" | cut -d " " -f 1 guan(4)選取系統(tǒng)PATH變量值,第2個(gè)“:”開始后的所有路徑:
echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/atguigu/binecho $PATH | cut -d: -f 2- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/atguigu/bin(5)切割ifconfig 后打印的IP地址
ifconfig eth0 | grep "inet addr" | cut -d: -f 2 | cut -d" " -f1 192.168.1.102sed
sed是一種流編輯器,它一次處理一行內(nèi)容。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為“模式空間”,接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有改變,除非你使用重定向存儲(chǔ)輸出。
1.基本用法
sed [選項(xiàng)參數(shù)] ‘command’ filename
2.選項(xiàng)參數(shù)說明
選項(xiàng)參數(shù) 功能
-e 直接在指令列模式上進(jìn)行sed的動(dòng)作編輯。
3.命令功能描述
命令 功能描述
a 新增,a的后面可以接字串,在下一行出現(xiàn)
d 刪除
s 查找并替換
4.案例實(shí)操
(0)數(shù)據(jù)準(zhǔn)備
touch sed.txt vim sed.txt dong shen guan zhen wo wo lai laile le(1)將“mei nv”這個(gè)單詞插入到sed.txt第二行下,打印。
sed '2a mei nv' sed.txt注意:文件并沒有改變
(2)刪除sed.txt文件所有包含wo的行
sed '/wo/d' sed.txt(3)將sed.txt文件中wo替換為ni
sed 's/wo/ni/g' sed.txt注意:‘g’表示global,全部替換
(4)將sed.txt文件中的第二行刪除并將wo替換為ni
sed -e '2d' -e 's/wo/ni/g' sed.txtawk
一個(gè)強(qiáng)大的文本分析工具,把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片,切開的部分再進(jìn)行分析處理。
1.基本用法
awk [選項(xiàng)參數(shù)] ‘pattern1{action1} pattern2{action2}...’ filename
pattern:表示AWK在數(shù)據(jù)中查找的內(nèi)容,就是匹配模式
action:在找到匹配內(nèi)容時(shí)所執(zhí)行的一系列命令
2.選項(xiàng)參數(shù)說明
選項(xiàng)參數(shù) 功能
-F 指定輸入文件折分隔符
-v 賦值一個(gè)用戶定義變量
3.案例實(shí)操
(0)數(shù)據(jù)準(zhǔn)備
sudo cp /etc/passwd ./
(1)搜索passwd文件以root關(guān)鍵字開頭的所有行,并輸出該行的第7列。
awk -F: '/^root/{print $7}' passwd /bin/bash(2)搜索passwd文件以root關(guān)鍵字開頭的所有行,并輸出該行的第1列和第7列,中間以“,”號(hào)分割。
awk -F: '/^root/{print $1","$7}' passwd root,/bin/bash注意:只有匹配了pattern的行才會(huì)執(zhí)行action
(3)只顯示/etc/passwd的第一列和第七列,以逗號(hào)分割,且在所有行前面添加列名user,shell在最后一行添加"dahaige,/bin/zuishuai"。
awk -F : 'BEGIN{print "user, shell"} {print $1","$7} END{print "dahaige,/bin/zuishuai"}' passwd user, shell root,/bin/bash bin,/sbin/nologin 。。。 atguigu,/bin/bash dahaige,/bin/zuishuai注意:BEGIN 在所有數(shù)據(jù)讀取行之前執(zhí)行;END 在所有數(shù)據(jù)執(zhí)行之后執(zhí)行。
(4)將passwd文件中的用戶id增加數(shù)值1并輸出
awk -v i=1 -F: '{print $3+i}' passwd 1 2 3 44.awk的內(nèi)置變量
變量 說明
FILENAME 文件名
NR 已讀的記錄數(shù)
NF 瀏覽記錄的域的個(gè)數(shù)(切割后,列的個(gè)數(shù))
5.案例實(shí)操
(1)統(tǒng)計(jì)passwd文件名,每行的行號(hào),每行的列數(shù)
awk -F: '{print "filename:" FILENAME ", linenumber:" NR ",columns:" NF}' passwd filename:passwd, linenumber:1,columns:7 filename:passwd, linenumber:2,columns:7 filename:passwd, linenumber:3,columns:7(2)切割I(lǐng)P
ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk -F " " '{print $1}' 192.168.1.102(3)查詢sed.txt中空行所在的行號(hào)
awk '/^$/{print NR}' sed.txt 5sort
sort命令是在Linux里非常有用,它將文件進(jìn)行排序,并將排序結(jié)果標(biāo)準(zhǔn)輸出。
1.基本語法
sort(選項(xiàng))(參數(shù))
選項(xiàng) 說明
-n 依照數(shù)值的大小排序
-r 以相反的順序來排序
-t 設(shè)置排序時(shí)所用的分隔字符
-k 指定需要排序的列
參數(shù):指定待排序的文件列表
2. 案例實(shí)操
(0)數(shù)據(jù)準(zhǔn)備
touch sort.sh vim sort.sh bb:40:5.4 bd:20:4.2 xz:50:2.3 cls:10:3.5 ss:30:1.6(1)按照“:”分割后的第三列倒序排序。
sort -t : -nrk 3 sort.sh bb:40:5.4 bd:20:4.2 cls:10:3.5 xz:50:2.3 ss:30:1.6面試題
京東
問題1:使用Linux命令查詢file1中空行所在的行號(hào)
答案:
awk '/^$/{print NR}' sed.txt 5問題2:有文件chengji.txt內(nèi)容如下:
張三 40
李四 50
王五 60
使用Linux命令計(jì)算第二列的和并輸出
cat chengji.txt | awk -F " " '{sum+=$2} END{print sum}' 150搜狐&和訊網(wǎng)
問題1:Shell腳本里如何檢查一個(gè)文件是否存在?如果不存在該如何處理?
#!/bin/bashif [ -f file.txt ]; thenecho "文件存在!" elseecho "文件不存在!" fi新浪
問題1:用shell寫一個(gè)腳本,對(duì)文本中無序的一列數(shù)字排序
cat test.txtsort -n test.txt|awk '{a+=$0;print $0}END{print "SUM="a}'金和網(wǎng)絡(luò)
問題1:請(qǐng)用shell腳本寫出查找當(dāng)前文件夾(/home)下所有的文本文件內(nèi)容中包含有字符”shen”的文件名稱
grep -r "shen" /home | cut -d ":" -f 1今天的學(xué)習(xí)筆記就分享到這啦!~!
最后打個(gè)小廣告,我的公眾號(hào)(顧先生的數(shù)據(jù)挖掘)
會(huì)分享點(diǎn)學(xué)習(xí)心得,我盡量做到周更哈。
喜歡的小伙伴可以關(guān)注下,你的關(guān)注是我最大的動(dòng)力!
總結(jié)
以上是生活随笔為你收集整理的adb shell读取返回值_shell学习笔记03(函数amp;shell工具amp;面试题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux如何删除名为-a的文件
- 下一篇: linux物理硬盘和sd的对应关系_计算