一、定義shell函數(define function)文法:[ function ] funname [()] { action; [return int;] } 說明: 1、可以帶function fun() 定義,也可以直接fun() 定義,不帶任何參數。 2、參數返回,可以顯示加:return 返回,如果不加,將以最後一條命令運行結果,作為傳回值。 return後跟數值n(0-255 執行個體(testfun1.sh):複製代碼 代碼如下:#!/bin/sh
在類unix系統中,符號連結是很常見的,我們會碰到各種與符號連結相關的處理工作。本文為大家介紹一些處理符號連結的實踐方法,希望對大家編寫shell指令碼時帶來一些協助,有需要的朋友不妨參考下。1、符號連結可以看作是指向其它檔案的指標。它在功能上類似於Mac OS中的別名或windows中的捷徑,記住是類似,而非就是哦。2、刪除符號連結不會影響到原始的檔案。建立符號連結:$ ln -s target symbolic_link_name例如:$ ln -s /var/www/
一、定義函數複製代碼 代碼如下:function fname(){statements;}或複製代碼 代碼如下:fname(){statements;}二、調用函數只需要使用函數名,即可調用某個函數:$ fname ; #執行函數可以傳遞參數給函數,並由指令碼進行訪問:fname arg1 arg2; # 傳遞參數以下是函數fname的定義。在函數fname中,包含了各種訪問函數參數的方法。複製代碼 代碼如下:fname(){ echo $1, $2; # 訪問參數1和參數2 echo "$
複製代碼 代碼如下:#!/bin/bash#telno 為查詢號碼列表檔案#sendsms.log 為簡訊發送結果檔案#1 代表發送成功query_sms(){>submit_telno>delivered_telno>fail_delivered_telnocat telno |while read line do#判斷telno 檔案裡的號碼哪些提交成功---儲存到submit_telnoawk '{if ($1=='$line') print$0}'
將bill 檔案夾下的檔案按一定規則(檔案名稱奇偶)拷貝至bill1,bill2 檔案夾下。更新bill1,bill2 處理進度標籤(更新file.max)file3 為bill 目錄下當前最新檔案的標籤,正常情況下每分鐘會更新(格式為:20121016122100)複製代碼 代碼如下:#!/bin/bash#for wanggy 2012/10/16bill1=/infosms/bill1bill2=/infosms/bill2file_max=`cat file3`cd
複製代碼 代碼如下:#!/bin/bash#********************************##並發後台運行fun ##for wanggy 2012-01-25 ##note: ##fun_num fun函數後台運行次數 ##sql_num 每個函數sql運行次數
在 linux 中,/proc/$PID/status 檔案提供了該進程資源(記憶體,堆棧,訊號量,子父進程)的使用方式,雖然linux提供了不少查看記憶體的命令,但都是看整體的使用方式,無法對單個進程的記憶體使用量情況進行查看。 本文為大家提供的這個指令碼,通過查看status檔案中VmRSS的欄位來查看系統或進程使用的記憶體情況,有需要的朋友不妨參考下。複製代碼 代碼如下:#! /bin/bashecho -n "PidName " >
俺也是新手,寫的有點老土,權當練手了,供初學的朋友們參考吧。複製代碼 代碼如下:#!/bin/bashif [ $succ_ping -gt $((ping_count-1)) ];thenif [ -f ./alarm_file/alarm_$host ];then rm -rf ./alarm_file/alarm_$host #發送故障消除簡訊通知--調用insert_table messages="$host伺服器通迅恢複正常`date "+%Y%m%d %H:%M:%S"`"
複製代碼 代碼如下:#!/bin/bash#main---network=192.168.1ping_count=3IP=1:>IP_use:>IP_idle:>ping_actionecho "`date "+%Y%m%d %H:%M:%S"`----->指令碼開始執行......"while [ $IP -lt 255 ]dohost=$network.$IPecho "-------->開始檢測$host伺服器通迅是否正常,ping次數$ping_count.
複製代碼 代碼如下:#!/bin/bash#2013-01-06 14:00:00 wanggy exp#note:ping monitorset -u#set -xping_fun(){ d_network=192.168.1 echo -n "input the network(default $d_network):" read network : ${network:=$d_network} echo "network:$network"
1.shell 指令碼是區分小寫2.Unix特殊字元有: ( ; $ ? & * () [] ` ‘ “ + 使用其時要進行轉義()3.Shell的注釋以#開頭4.函數的定義Function fuction_name(){Command to execute}調用時直接用function_name.5.控制結構1)If...then語句If [ test_command ]ThenCommandsif2)If...then...else語句If [ test_command
1.字元截斷:如果是一般路徑的字元截斷可以用basename和dirname這兩個工具:basename可以從一個檔案路徑中截一個檔案名稱例如:複製代碼 代碼如下:$ basename /home/file.tarfile.tardirname可以從一個檔案路徑中截到一個目錄路徑例如:複製代碼 代碼如下:$ dirname /home/file.tar/home不使用外部工具進行字元截斷bash有內建的功能來對變數進行字元截斷,一般使用"##", "#", "%%", "%", "*"
利用here文檔 複製代碼 代碼如下:#!/bin/sh ftp -ivn 210.29.28.124 <<EOF user yun yun2011 lcd /home/veyun cd /home/veyun/yhb get v bye EOF 解釋: -i :關閉多檔案傳輸過程中的互動提示,所以不會再有讓使用者輸入使用者名稱和密碼的提示 -n:阻止了初始串連時的自動登入 -v:將ftp命令設定為verbose模式,從而可以在會話時看到其中的命令
* -b 當file存在並且是塊檔案時返回真 * -c 當file存在並且是字元檔案時返回真 * -d 當pathname存在並且是一個目錄時返回真 * -e 當pathname指定的檔案或目錄存在時返回真 * -f 當file存在並且是正規檔案時返回真 * -g 當由pathname指定的檔案或目錄存在並且設定了SGID位時返回為真 * -h 當file存在並且是符號連結檔案時返回真,該選項在一些老系統上無效 * -k 當由pathname指定的檔案或目錄存在並且設定了“粘滯”位時返回真 *
Shell 從標準輸入或指令碼中讀取的每一行稱為管道(pipeline);它包含了一個或多個命令(command),這些命令被一個或多個管道字元(|)隔開。 事實上還有很多特殊符號可用來分隔單個的命令:分號(;)、管道(|)、&、邏輯AND (&&),還有邏輯OR (||)。對於每一個讀取的管道,Shell都回將命令分割,為管道設定I/O,並且對每一個命令依次執行下面的操作:整個步驟順序如所示,看起來有些複雜。當命令列被處理時,每一個步驟都是在Shell的記憶體裡發生的;
二元比較操作符,比較變數或者比較數字.注意數字與字串的區別. 整數比較 -eq 等於,如:if [ "$a" -eq "$b" ] -ne 不等於,如:if [ "$a" -ne "$b" ] -gt 大於,如:if [ "$a" -gt "$b" ] -ge 大於等於,如:if [ "$a" -ge "$b" ] -lt 小於,如:if [ "$a" -lt "$b" ] -le 小於等於,如:if [ "$a" -le "$b" ] < 小於(需要雙括弧),如:(("$a" <
例如,要求指令碼只能順序訪問某個資源,例如磁碟檔案等,就可以參考下面的實現。複製代碼 代碼如下:#!/bin/bash## file locking using bash.# ver 0.1.6## author : malundao ( malundao@sina.com )# date : 2011-08-31 # ref : http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2005-09/0472.html##
1、基本概念 a、I/O重新導向通常與 FD有關,shell的FD通常為10個,即 0~9; b、常用FD有3個,為0(stdin,標準輸入)、1(stdout,標準輸出)、2(stderr,標準錯誤輸出),預設與keyboard、monitor、monitor有關; c、用 < 來改變讀進的資料通道(stdin),使之從指定的檔案讀進; d、用 > 來改變送出的資料通道(stdout, stderr),使之輸出到指定的檔案; e、0 是 < 的預設值,因此 < 與 0&
shell字串比較、判斷是否為數字 二元比較操作符,比較變數或者比較數字.注意數字與字串的區別. 整數比較 -eq 等於,如:if [ "$a" -eq "$b" ] -ne 不等於,如:if [ "$a" -ne "$b" ] -gt 大於,如:if [ "$a" -gt "$b" ] -ge 大於等於,如:if [ "$a" -ge "$b" ] -lt 小於,如:if [ "$a" -lt "$b" ] -le 小於等於,如:if [ "$a" -le "$b" ] <
monitordisk.sh如下 複製代碼 代碼如下:#!/bin/bash #Updated:2008-03-03 PM By:leif(liangliwen@163.com) EMAIL=/usr/local/bin/email /bin/df -h >/tmp/df.txt USE=`df -H | grep -o [0-9]*% | grep -o ‘[0-9]\+'` for i in $USE do if (( $i > 95 )) then $EAMIL -s