如何编写一个shell脚本 如何写一个linux 的shell脚本

\u5982\u4f55\u7f16\u5199\u4e00\u4e2ashell\u811a\u672c



问题:

1、请求在线api, 获取json格式的返回结果
2、解析json里面的一个值
3、将该值存储到文件

开发准备:

1、shell

快速入门:
#!/bin/sh
cd ~
mkdir shell_tut
cd shell_tut
for ((i=0; i<10; i++)); do
touch test_$i.txt
done

创建一个文件夹, 并在里面新建10个文件
2、curl

使用curl请求网络, 并获取返回值
curl基本用法:
$ curl www.sina.com

直接返回网页内容
$ curl -o [文件名] www.sina.com

将网页内容存储到文件中, 相当于wget命令
赋值操作:
response=$(curl www.sina.com)
echo $response

注意: =前后没有空格
jq

jq是命令行解析json的很好的工具
安装
直接到官网下载Linux64版本(我是用本地下载好后传上服务器的, 之前直接在服务器用wget下载一直报错Segmentation fault, 折腾好久~)
将其copy到bin目录
cp jq-linux64 /usr/bin/jq

使用
然后就可以愉快的使用jq命令了:

可直接查看官网Tutorial
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5'

返回的是一个json数组列表
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.'

使用.直接指向json的根节点
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[0]'

[0]为取数组的第0位的对象
jq '.[0] | {message: .commit.message, name: .commit.committer.name}'

可用过连续的.操作获取对应json对象中的属性值, 上面的命令将会生成一个{message: "....", name: "...."}的json对象.
shell文件读写

1、写
方式一:
将ll的内容写入fileName这个文件中

>是覆盖, >>是在后面追加
ll >fileName

但是在书写.sh脚本的时候, 需要增加echo
echo ll>fileName

2、读
while read LINE
do
echo $LINE
done<fileName

fileName是即将读取的文件名

  • 濡備綍缂栧啓涓涓猻hell鑴氭湰
    绛旓細棣栧厛鎵撳紑缂栫▼鐣岄潰锛屾煡鐪嬬幇鍦╠og鐩綍涓嬬殑鏂囦欢鐨勬潈闄愪俊鎭傜幇鍦╞.txt鐨勭敤鎴锋潈闄愭槸RW锛岀粍鏉冮檺鏄疪W锛屽叾浠栨潈闄愭槸R銆傜幇鍦ㄦ垜缁欑敤鎴锋潈闄愬姞涓奨杩愯鏉冮檺銆傛柊寤涓涓鏂囦欢shell鑴氭湰涓鑸敤脳.sh浣滀负鍚庣紑褰撶劧鍕囨皵浠栫殑涔熷彲浠ャ傛墦寮缁堢杈撳叆touchfirst.sh鏂板缓涓涓悕涓篺irst鐨剆hell鑴氭湰銆傚湪shell鑴氭湰涓彲浠ヤ娇鐢ㄤ笁绫诲懡浠わ細1)Uni...
  • 濡備綍鍒涘缓shell鑴氭湰?
    绛旓細1銆乼ouch hello.sh 2銆乿im hello.sh 閿叆i 鎻掑叆#!/bin/sh echo hello world;閿叆:esc :wq 3銆乧hmod 700 hello.sh 4.銆佹墽琛./hello.sh
  • 濡備綍缂栧啓涓涓猻hell鑴氭湰
    绛旓細绛夋潵缂栧啓鎴戜滑鐨shell绋嬪簭銆 绋嬪簭蹇呴』浠ヤ笅闈㈢殑琛屽紑濮(蹇呴』鏂瑰湪鏂囦欢鐨勭涓琛): #!/bin/sh 绗﹀彿#!鐢ㄦ潵鍛婅瘔绯荤粺瀹冨悗闈㈢殑鍙傛暟鏄敤鏉ユ墽琛岃鏂囦欢鐨勭▼搴忋傚湪杩欎釜渚嬪瓙涓垜浠娇鐢/bin/sh鏉ユ墽琛岀▼搴忋 褰撶紪杈戝ソ鑴氭湰鏃,濡傛灉瑕佹墽琛岃鑴氭湰,杩樺繀椤讳娇鍏跺彲鎵ц銆 瑕佷娇鑴氭湰鍙墽琛: chmod +x filename 鐒跺悗,鎮ㄥ彲浠ラ氳繃杈撳叆: ...
  • 9涓疄鎴樺強闈㈣瘯甯哥敤Shell鑴氭湰缂栧啓
    绛旓細1. 鍓嶇疆鍑嗗</ 纭繚鑴氭湰鐨勬纭墽琛岋紝浠庝竴寮濮嬪氨娉ㄦ槑瑙i噴鍣細#!/bin/bash銆備繚鎸佽壇濂界殑缂栫▼涔犳儻锛屼娇鐢ㄥ洓涓┖鏍艰繘琛岀缉杩涳紝姣忚浠g爜鍚庢坊鍔犳敞閲婏紝娓呮櫚琛ㄨ揪鍔熻兘銆2. 鍙橀噺绠$悊</ 鍙橀噺鍛藉悕鏈夎绌讹細鍏ㄥ眬鍙橀噺棣栧瓧姣嶅ぇ鍐欙紝濡侻Y_GLOBAL_VAR锛涘眬閮ㄥ彉閲忛瀛楁瘝灏忓啓锛屽myLocalVar銆傚嚱鏁板悕淇濇寔灏忓啓锛屽弽鏄犲叾鍔熻兘锛屽color...
  • linuxshell缂栫▼
    绛旓細1.瀹炵幇鏂囦欢澶囦唤 鏂囦欢澶囦唤鏄竴椤瑰父瑙佺殑鎿嶄綔锛屽彲浠ラ氳繃Shell鑴氭湰鏉ュ疄鐜銆備互涓嬫槸涓涓畝鍗曠殑鏂囦欢澶囦唤鑴氭湰锛歚``!/bin/bash 澶囦唤鏂囦欢 tar-czvfbackup.tar.gz/home/user ```浠ヤ笂鑴氭湰灏/home/user鐩綍涓嬬殑鏂囦欢澶囦唤鍒癰ackup.tar.gz鏂囦欢涓2.瀹炵幇瀹氭椂浠诲姟 瀹氭椂浠诲姟鏄竴椤归潪甯稿疄鐢ㄧ殑鍔熻兘锛屽彲浠ラ氳繃Shell鑴氭湰鏉...
  • 濡備綍缂栧啓涓涓猻hell鑴氭湰
    绛旓細缂栧啓涓涓绠鍗曠殑linuxshell鑴氭湰 鎴戜滑鍐欏叆涓涓畝鍗曠殑shell鑴氭湰锛屾敞鎰忕涓琛岀殑浠g爜瑙i噴鍣ㄧ殑鎸囧畾锛岃繖閲屼娇鐢ㄧ殑鏄/bin/bash/ 瑙i噴鍣 涔熷彲鐢ㄥ叾浠栫殑鏍规嵁涓汉鎯呭喌鑷繁閫夋嫨銆傝剼鏈В閲婏細echo //鏄剧ず涓涓插瓧绗﹀苟鑷姩鎹㈣ read NAME //浠庡睆骞曡幏鍙栦竴娈靛瓧绗︼紝骞惰祴浜圢AME NAME //鍙朜AME鍙橀噺鐨勫 //鍙敤涓涓#琛ㄧず娉ㄩ噴鏂囨湰...
  • 濡備綍缂栧啓涓涓绠鍗曠殑shell鑴氭湰
    绛旓細1銆侀鍏堟墦寮缂栫▼鐣岄潰锛屾煡鐪嬬幇鍦╠og鐩綍涓嬬殑鏂囦欢鐨勬潈闄愪俊鎭2銆佺幇鍦╞.txt鐨勭敤鎴锋潈闄愭槸RW锛岀粍鏉冮檺鏄疪W锛屽叾浠栨潈闄愭槸R銆傜幇鍦ㄦ垜缁欑敤鎴锋潈闄愬姞涓奨杩愯鏉冮檺銆3銆佸悓鏍风殑鏂规硶缁欑粍銆佸叾浠栦汉鍔犱笂杩愯鏉冮檺浣跨敤chmod u/g/o +x b.txt 銆4銆佸鏋滆鍙栨秷瀵瑰簲鐨勬潈闄愶紝浣跨敤鈥-鈥濆彿鍗冲彲銆5銆侀櫎浜嗕娇鐢≧WX瀛楃鍚庤繕鍙互...
  • 濡備綍浠庨浂寮濮鍐檚hell鑴氭湰
    绛旓細1銆侀鍏堝埄鐢╟at > 鎴栬卾im 寤虹珛涓涓鏂版枃浠秚ss銆2銆佺劧鍚庡湪鏂板缓鐨勬枃浠朵腑缂栧啓鐩稿簲鐨勮剼鏈,濡備笅锛歔plain] view plain copy #锛/bin/sh  echo hello  娉ㄦ剰锛缂栧啓shell鑴氭湰锛#锛 /bin/sh蹇呴』瑕佹湁锛岃繖涓槸鍛婄煡Linux鍐呮牳搴旇浠ュ摢涓猻hell鏉ユ墽琛屾墍鎸囧畾鐨剆hell鑴氭湰銆3銆乧hmod ...
  • Linux Shell鑴氭湰绯诲垪鏁欑▼:Shell鍏ラ棬
    绛旓細缂栧啓鑴氭湰閫氬父浣跨敤鏌愮鍩轰簬瑙i噴鍣ㄧ殑缂栫▼璇█銆shell鑴氭湰鏈川涓婂氨鏄竴浜涙枃鏈枃浠讹紝鎴戜滑鍙互灏嗕竴绯诲垪闇瑕佹墽琛岀殑鍛戒护鍐欏叆鍏朵腑锛岀劧鍚庨氳繃shell鏉ユ墽琛屻傚湪杩欓噷鎴戜滑浠嬬粛鐨勬槸Bash shell(Bourne Again Shell),瀹冩槸鐩墠澶у鏁癎UN/Linux绯荤粺榛樿鐨剆hell鐜銆備功涓墍鏈夌殑瀹為獙閮芥槸鍦║buntu14.04 LTS鐜涓嬪畬鎴愮殑銆備簩銆佸熀鏈...
  • 鎬庝箞鍐LINUX鐨SHELL?
    绛旓細鍦ㄨ繘琛宭inux娴嬭瘯鏃缂栧啓鑴氭湰鏄繀涓嶅彲灏戠殑,Shell鑴氭湰鐨勫悕绉板彲浠ラ殢渚垮畾涔,涔熶笉瑕佷粈涔堝悗缂鍚,渚嬪鍙互鍐檃bc,smartzip杩欑被鍚嶇О,杩愯鏃跺彧瑕侀敭鍏./smartzip灏辫兘杩愯鑴氭湰浜嗐傘傛瘡琛屽懡浠ゅ紑澶村涓嶇敤灏辩┖鏍间篃琛屻傘傜1閮ㄥ垎. Linux 鑴氭湰缂栧啓鍩虹1.1 璇硶鍩烘湰浠嬬粛1.1.1 寮澶寸▼搴忓繀椤讳互涓嬮潰鐨勮寮濮(蹇呴』鏂瑰湪鏂囦欢鐨勭涓琛):#!
  • 扩展阅读:shell脚本自学入门教程 ... 编写简单的shell脚本 ... shell脚本编程题库 ... shell自动化测试脚本 ... 手机shell脚本编写工具 ... 编写一个简单的脚本 ... 自动生成shell脚本 ... 100个必会的shell脚本 ... shell脚本面试题 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网