一步步教你如何編寫Shell腳本
問題:
- 請求在線api, 獲取json格式的返回結(jié)果
- 解析json里面的一個值
- 將該值存儲到文件
開發(fā)準備
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)絡, 并獲取返回值
curl基本用法:
$ curl www.sina.com
直接返回網(wǎng)頁內(nèi)容
$ curl -o [文件名] www.sina.com
將網(wǎng)頁內(nèi)容存儲到文件中, 相當于wget命令
賦值操作:
response=$(curl www.sina.com) echo $response
注意: =前后沒有空格
jq
jq是命令行解析json的很好的工具
安裝
直接到官網(wǎng)下載Linux64版本(我是用本地下載好后傳上服務器的, 之前直接在服務器用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ù)的.操作獲取對應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)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Linux兩個服務器實現(xiàn)數(shù)據(jù)同步方案
這篇文章主要介紹了Linux兩個服務器實現(xiàn)數(shù)據(jù)同步方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07Linux宿主機下/容器下如何修改進程打開的文件句柄數(shù)(open files)
系統(tǒng)級的max-file和進程級的ulimit-n分別控制文件句柄的最大數(shù)量,系統(tǒng)級限制整個系統(tǒng),而ulimit-n只限制單個進程,當進程打開的文件句柄數(shù)超限時,會報“Too many files open”錯誤,可以通過特定命令查看和修改這些值2024-10-10centos 5 手動分區(qū)來安裝系統(tǒng)的方法
近來我想體驗一下centos系統(tǒng),于是在虛擬機中安裝了centos 5。2010-03-03解決生產(chǎn)環(huán)境遇到的curl和yum命令報錯問題
在銀河麒麟V10SP2arm64系統(tǒng)下,升級sshd服務同時升級了openssl至1.1.1l版本,導致curl和yum命令報錯,分析原因是openssl版本與libcurl.so.4文件不兼容,嘗試修復無效后,通過重新編譯安裝curl解決問題,建議在升級openssl時謹慎2024-09-09