第一次寫的linux腳本

剛開始學的時候,都是一些基本的命令,總是無法把它們聯系到一塊去,現在剛開始接觸腳本,頓時感覺壓力好大,基礎命令如果記不牢,很有可能就掛了,下面我把近幾天學習的一些腳本命令及練習拿來分享一下,供大家參考,同時加深我的記憶。

首先是寫腳本的格式,我這里用vim編輯器來寫的腳本,因為它的色彩非常明艷,易于區分?;靖袷饺缦拢?/p>

#!/bin/bash 第一行一般為調用使用的語言,或者你使用的 shell

# —————————————- 下面就是注釋啦,,這個也很重要,都是要在腳本中寫的,便于以后查閱,有的不需要的可以選擇不寫

# Filename: hello.sh 程序名

# Revision: 1.1 版本號

# Date: 2017/06/01 更改日期

# Author: wang 作者

# Email: wang@gmail.com 郵箱

# Website: www.magedu.com 網站,可以查閱相關信息

# Description: This is the first script 描述該程序的作用,及注意事項

# Copyright: 2017 wang 版權

# License: GPL 許可證

echo “hello world” 腳本內容

寫完上面基本的注釋之后就可以安心寫自己的腳本內容了,腳本一般都是為實現某個特定的功能,簡化某些復雜的操作,這里就得引用一些變量來為我們簡化程序了。變量有些是系統中自帶的,還有些需要我們自己定義,一般定義變量是以字母、下劃線和數字定義的,但是不能以數字開頭,下面說一些常用的變量吧,當然變量也分好多種,有本地變量,環境變量,位置變量等,我每一種都會列舉一些,以便用的時候查閱。

本地變量:如A=123其中A就是本地變量,只能在當前shell 使用

環境變量:

PATH 顯示路徑,顯示可執行文件的搜索路徑

SHELL 顯示當前的shell

 第一次寫的linux腳本

USER 顯示當前用戶

UID 顯示當前用戶的uid

HOME 顯示用戶的家目錄

PWD 顯示用戶當前處在哪個目錄下

SHLVL 顯示用戶當前出于幾級shell

LANG 顯示字符集

MAIL 顯示郵箱路徑

HOSTNAME 顯示主機名

HISTSIZE 可以設置保存的歷史命令條數

— 顯示上次執行的命令

位置變量:

$1, $2, …:對應第1、第2等參數, shift [n]換位置

$0: 命令本身

$*: 傳遞給腳本的所有參數,全部參數合為一個字符串

$@: 傳遞給腳本的所有參數,每個參數為獨立字符串

$#: 傳遞給腳本的參數的個數

$@ $* 只在被雙引號包起來的時候才會有差異

set — 清空所有位置變量

下面正式開始我的腳本之路,這將是一個痛并快樂的過程。

(1)寫一個能夠創建新腳本的Shell script,如名為createsh當執行時createsh /root/bin/test1.sh

則會自動創建并打開/root/bin/test1.sh,且其中包含以下內容。

答題:腳本內容如下:

第一次寫的linux腳本

運行時先給createsh加個執行權限,chmod +x createsh,然后再這樣執行

第一次寫的linux腳本

其中b.sh是我要創建的新文件名,這個名字可以隨意寫,執行之后就生成了一個名為b.sh的新文件了,里面還自動有了注釋和自動生成時間了。

解題思路:首先使用echo ,用引號引用一段你想要顯示的內容導入到$1中,$1就是你執行命令的第一個參數,>是輸出重定向,把內容給一個文件之后,在現有基礎上可以再編輯文件,最后給創建的新文件加上執行權限,也可以不加,這看個人愛好了。

(2)編寫腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶和第20用戶的ID之和

答題:由于上一題我們已經寫了一個快速創建腳本的命令,因此這一題我們可以使用那個命令

第一次寫的linux腳本

下面這個是用擴展正則表達式,看著好像比我的簡單,所以也列出來,以供以后參考。

第一次寫的linux腳本

這是我寫的第一種方法,是一種非常不靈巧的方法,但是我想著在沒有其他辦法的情況下,是可以使用這種辦法的。還有一種看起來好像比較容易的方法,我在這里也把它寫出來。

第一次寫的linux腳本

運行時是這樣的:

第一次寫的linux腳本

解題思路:第一種方法的解題思路非常簡單,cat –n /etc/passwd 的意思就是顯示passwd 的內容,并顯示行號,這樣便于后面的截取。第一個管道符后面的內容是截取以空格開頭的,后面不止一個空格,中間有數字10和20的行,這樣就把第10行和第20行截取下來了。第三個管道符就是截取uid部分了,這就很簡單了,關鍵是最后怎么計算它們的和,利用echo ` `把前面的結果輸入到bc中,以此來計算id之和。

第二種方法 就是單獨把第10行的算出來,把值賦給變量id10,這個變量是自己起的名字,前面呢有提到哦,然后再把第20行的結果賦給id20,最后相加就可以了。在最后記得用完之后把變量空間釋放,用unset 加變量名就可以了。

(3)編寫腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和

答題:腳本內容如下:

第一次寫的linux腳本

解題思路:首先定義兩個變量s1,s2,因為是兩個文件,所以定義兩個變量,先說第一個變量的獲取過程,cat $1查看第一個文件,然后通過管道符把結果傳給下一個命令,接著通過grep截取行,這里注意的是^$在一塊表示空白行,最后wc –l顯示空白行數,變量二和變量一獲取的過程一樣,,這里就不多說了,最后一個命令是把兩個行數加一起,得到想要的結果,$[]用于運算。

第二種方法:

第一次寫的linux腳本

解題思路:這種方法比較簡單,首先使用cat $@命令,非常巧妙,把兩個文件內容合并到一起,注意,cat file1 file2時,是把兩個文件內容合并 到一起顯示的 ,容易被忽略,$@是把每個參數當做獨立字符串,合起來就是把兩個文件合并成一個文件顯示出來,接著管道符后面是把空行行數顯示出來 ,可以說這個思路非常巧妙,不過不是我寫的,是我借鑒別人的,我很佩服。

原創文章,作者:lll,如若轉載,請注明出處:http://www.www58058.com/83981

(0)
llllll
上一篇 2017-08-05 20:41
下一篇 2017-08-05 21:03

相關推薦

  • 網絡相關命令

    網絡相關命令 常用命令 ifcfg家族:   ifconfig:配置IP,NETMASK   route :路由   netstat : 狀態及統計數據查看 iproute2家族     ip  系列 &nbs…

    Linux干貨 2016-09-07
  • 磁盤配額

    磁盤配額 1 啟用磁盤配額 首先創建新的分區 /dev/sd5,并創建文件系統。 [root@local ~]# mkfs.ext4 /dev/sda5 由于xfs 不磁盤配額能成功,這里使用ext4. 然后把/dev/sda5分區掛載到 /home [root@local ~]# mount /dev/sda5 /home [root@local ~]# …

    Linux干貨 2017-05-02
  • LAMP分離環境的搭建(最新版本的mysql+php+http源碼編譯安裝)

    實驗者:FrankStar      實驗日期:20150628 任務:主要是實現在Linux環境下配置LAMP環境,利用VMware+centos6.4實現,將LAMP分離為多臺主機; 附注:由于大家的環境不一樣,可能有些人已經安裝了這個包或者那個軟件,所以調試的環境結果也不一樣,為了盡量能模擬到 可能出現的所有問題,在編譯會…

    Linux干貨 2015-06-30
  • ansible自動化運維工具使用詳解

    一、ansible簡介   1.ansible        ansible是新出現的自動化運維工具,基于Python研發。糅合了眾多老牌運維工具的優點實現了批量操作系統配置、批量程序的部署、批量運行命令等功能。僅需在管理工作站上安裝ansible程序配置被管控主機的IP信息,被…

    2016-04-30
  • vim編輯器使用詳解

    1.vi (virtual interface)文本編輯器     文本編輯種類:     行編輯器:sed     全屏編輯器:nano vi     vim vi-improved  &…

    Linux干貨 2016-08-15
  • linux基礎命令1

    內容包含:文件管理、重定向和管道、用戶組和權限管理、文本處理工具

    Linux干貨 2017-11-19
欧美性久久久久