一步步教你如何編寫Shell腳本
問題:
- 請求在線api, 獲取json格式的返回結(jié)果
- 解析json里面的一個值
- 將該值存儲到文件
開發(fā)準(zhǔn)備
1、shell
快速入門:
#!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch test_$i.txt done
創(chuàng)建一個文件夾, 并在里面新建10個文件
2、curl
使用curl請求網(wǎng)絡(luò), 并獲取返回值
curl基本用法:
$ curl www.sina.com
直接返回網(wǎng)頁內(nèi)容
$ curl -o [文件名] www.sina.com
將網(wǎng)頁內(nèi)容存儲到文件中, 相當(dāng)于wget命令
賦值操作:
response=$(curl www.sina.com) echo $response
注意: =前后沒有空格
jq
jq是命令行解析json的很好的工具
安裝
直接到官網(wǎng)下載Linux64版本(我是用本地下載好后傳上服務(wù)器的, 之前直接在服務(wù)器用wget下載一直報錯Segmentation fault, 折騰好久~)
將其copy到bin目錄
cp jq-linux64 /usr/bin/jq
使用
然后就可以愉快的使用jq命令了:
可直接查看官網(wǎng)Tutorial
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5'
返回的是一個json數(shù)組列表
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.'
使用.直接指向json的根節(jié)點
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[0]'
[0]為取數(shù)組的第0位的對象
jq '.[0] | {message: .commit.message, name: .commit.committer.name}'
可用過連續(xù)的.操作獲取對應(yīng)json對象中的屬性值, 上面的命令將會生成一個{message: "....", name: "...."}的json對象.
shell文件讀寫
1、寫
方式一:
將ll的內(nèi)容寫入fileName這個文件中
>是覆蓋, >>是在后面追加
ll >fileName
但是在書寫.sh腳本的時候, 需要增加echo
echo ll>fileName
2、讀
while read LINE do echo $LINE done<fileName
fileName是即將讀取的文件名
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
關(guān)于Windows 不能在 本地計算器 啟動 Apache2(phpstudy)
今天在自己的本子上準(zhǔn)備放多個虛擬站點。用的是#phpstudy#。在軟件自身的站點設(shè)置中,根據(jù)提示添加的多站點無效不知道是否和我的系統(tǒng)是Win7有關(guān)2012-09-09
Linux系統(tǒng)下 centos7下搭建ElasticSearch中間件及常用接口演示
ElasticSearch是一個基于Lucene的搜索服務(wù)器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。這篇文章主要介紹了Linux系統(tǒng)下 centos7下搭建ElasticSearch中間件及常用接口演示 ,需要的朋友可以參考下2019-07-07
詳解linux centos yum安裝LAMP環(huán)境
本篇文章主要介紹了linux centos yum安裝LAMP環(huán)境 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。2016-12-12
CentOS7環(huán)境搭建python3以及與python2實現(xiàn)共存的方法
這篇文章主要介紹了CentOS7環(huán)境搭建python3以及與python2實現(xiàn)共存的方法,結(jié)合實例形式簡單分析了CentOS7環(huán)境下安裝Python3的步驟、命令及測試代碼示例,非常簡單易懂,需要的朋友可以參考下2018-06-06

