歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux的shell小腳本的用途

Linux的shell小腳本的用途
  熟悉Linux的朋友們,對linux的命令,肯定都不陌生,大部分時候我們都可以使用系統自帶的命令來輕松完成我們的工作。如果我們再能簡單掌握下這些shell的制作,在某些場景下對我們的工作是非常有利的,當然如果你shell功底深,那麼你完全可以制作出很多有意思的東西。 
本篇散仙只是簡單介紹下怎麼入門,以及這些封裝的shell腳本在一些集群作業帶來的便利, 
下面截個tomcat的bin下面的目錄,來熟悉一下我們最常用的tomcat的一些腳本組成 

 
上圖中,我們會發現大部分都是cat和sh結尾的,而這個sh結尾的其實就是linux下自定義的shell的命令用來完成特定的功能,而以cat結尾的這個就是Windows上的批處理命令,類似win上的shell,有了這兩種腳本就可以兼容Windows和linux的平台應用了。 

我們先制作一個經典的Hellow World的shell腳本,步驟非常簡單,打開你的記事本(推薦使用Notepad++),輸入以下內容即可。 

 
然後保存成x.sh即可,然後我們就可以上傳到linux上,並賦予可執行權限後,就可以執行sh  x.sh看輸出效果了,截圖如下:

 
下面在給一個使用shell循環打印10-20間的例子,內容如下 
 
依舊上傳linux,添加可執行權限後,進行執行打印效果如下: 
 

另外一點,需要特別注意的是,由於編輯腳本是直接在windows下寫的,並沒有使用特定的編輯器或者其他工具,所以很有可能出現一些莫名其妙的異常,這些錯誤是我們眼睛看不到的,遇到這個情況,例如如下異常或者提示語法錯誤  Java代碼  unexpected end of file 
我們可以在linux上使用cat命令,進行清洗數據, 
使用工具 cat 和 tr, 方法如下: 

bash$ cat -v startqftest.sh |tr -d "^M" > qf.sh 

其中 startqftest.sh 是存在問題的腳本, qf.sh是新生成的文件。 

sed 's/^M//' test.sh > back.sh^M是Ctrl+v Ctrl+m 

解釋一下, cat 可以查看許多不可見這符, 
cat -t 顯示TAB 為 ^I 
cat -e 顯示行尾為 $, 
cat -v 顯示不可見字符,用^M表示,所以^M就表示不認識的不可見字符。M 表示Mark,標記的意思。 
tr - translate or delete characters 
另外,cat 還可以用來調Makefile, 
cat -t Makefile 查看命令中有非Tab開頭的, 
grep '^ ' Makefile 查找命令行中以空格開頭的行 
cat -e Makefile 查看行尾是否正確,防止\後面多一個空格, 
grep '\\[ ]$' Makefile 找出以上那樣的行 


最後,散仙還講說一下,會簡單的shell編程帶來的好處,當我們使用hadoop進行集群提交作業時,你可能使用的是C++,或者PHP,或者Python語言等非Java編寫的MR程序,這種方式就是Hadoop Streaming的方式了,當我們向集群提交作業時,可能會執行一段很長的shell命令來提交作業,並且在每個集群上都要分發一份命令,而這時候我們封裝一個shell腳本,就很方便了,因為你不可能去手動執行每個節點上的命令,假設集群規模很大,那將是多麼耗時的一件事情,而且還容易出錯,所以,封裝個腳本可以重復利用,也很簡潔,如下所示的一段提交命令  Java代碼  #!/bin/sh   bin/hadoop jar   hadoop-streaming-1.2.0.jar \   -files map.py \   -files r.py \   -mapper 'map.py' \   -reducer 'r.py' \   -input /note \   -output /noteout  
封裝一個shell腳本裡面,可以重復使用,執行起來也非常方便,當然使用shell編程的可以完成很多事情,散仙上面所舉的例子只是它的冰山一角,有興趣的朋友可以再去深入的研究一下。 
Copyright © Linux教程網 All Rights Reserved