Time of Update: 2017-01-18
寫法一:複製代碼 代碼如下:#!/bin/bashwhile read linedo echo $line #這裡可根據實際用途變化done < urfile寫法二:複製代碼 代碼如下:#!/bin/bashcat urfile | while read linedo echo $linedone注意:以上代碼中urfile
Time of Update: 2017-01-18
今天看一個指令檔的時候有一些地方不太懂,找了一篇文章看了一些,覺得不錯,保留下來。 假設我們定義了一個變數為:複製代碼 代碼如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分別替換得到不同的值:複製代碼 代碼如下:${file#*/}:刪掉第一個 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt${file##*/}:刪掉最後一個 / 及其左邊的字串:my.file.txt${file#*.}:刪掉第一個
Time of Update: 2017-01-18
寫這篇部落格之前,我google了一堆相關文章,大都是說修改/etc/sudoers,然後NOPASSWD:指定的cmd,但是真心不管用,沒有遠程虛擬終端這個方法就是浮雲,ubuntu10.04 server 親測!!ssh執行遠程操作命令格式複製代碼 代碼如下:ssh -p $port $user@$p 'cmd' $port : ssh串連連接埠號碼 $user: ssh串連使用者名稱 $ip:ssh串連的ip地址
Time of Update: 2017-01-18
當初在shell中, 看到">&1"和">&2"始終不明白什麼意思.經過在網上的搜尋得以解惑.其實這是兩種輸出.在 shell 程式中,最常使用的 FD (file descriptor) 大概有三個, 分別是:0 是一個檔案描述符,表示標準輸入(stdin)1 是一個檔案描述符,表示標準輸出(stdout)2 是一個檔案描述符,表示標準錯誤(stderr)在標準情況下, 這些FD分別跟如下裝置關聯: stdin(0): keyboard 鍵盤輸入,並返回在前端 stdout(1):
Time of Update: 2017-01-18
這是一個 shell 指令碼,所以首先你需要安裝一個基本的 Cygwin 環境,當然還有 curl。原理很簡單,先從 cygwin.com 下載最新的 mirrors.lst 鏡像列表,簡單處理一下後,利用 curl 以此檢測每個網站的連線速度,並將結果記錄下來,最後再排個序,顯示出最快的幾個網站。在使用的過程中,我發現檢測到的最快的 mirror,實際上使用速度並不一定是最快的,這可能和伺服器有關係,畢竟 curl 檢測的時間只是讀取 mirror 首頁的時間。不過每個 mirror
Time of Update: 2017-01-18
隨機產生10個8位密碼shell指令碼1.首位大寫字母2.中間六位大小寫字母數字隨機混合3.第八位[0-9]#!/bin.bashfor i in {1..10}doA=`head -c 500 /dev/urandom | tr -dc a-zA-Z | tr [a-z] [A-Z]|head -c 1`B=`head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 6`C=`echo $RANDOM|cut -c 2`echo
Time of Update: 2017-01-18
嵌入式初學者,第一次上傳代碼。昨天做了一個udhcpd與udhcpc的守護,目前只會用shell模仿編寫,還有什麼方法可以做守護呢?#! /bin/sh#進程名字可修改PRO_NAME=udhcpcWLAN=ra0 while true ; do # 用ps擷取$PRO_NAME進程數量 NUM=`ps aux | grep ${PRO_NAME} | grep -v grep |wc -l`# echo $NUM# 少於1,重啟進程 if [ "${NUM}" -lt "1"
Time of Update: 2017-01-18
Linux Shell指令碼檢測tomcat並自動重啟後台運行命令 sh xxx.sh &查看背景工作:jobs召喚到前台:fg jobs編號可以刪掉while迴圈的代碼放到crontab裡面定時執行,可以將指令碼直接後台運行,#!/bin/bashwhile [ true ]do url="http://www.jb51.net/"; httpOK=`curl --connect-timeout 10 -m 60 --head --silent $url | awk 'NR==1{
Time of Update: 2017-01-18
很多時候,我們都會寫shell程式來完成一些不用重複造輪子的時刻,但是,又因為shell語句中也會有函數,也會有變數,在運行後到底執行了哪些相關的操作,就需要對具體執行過程中的變數等可變的因素的監控,那麼我們下面就寫個小小的shell例子,來完成這個對執行過程中條件陳述式中的變數的變化的監控和整個程式的執行流程的觀察。shell程式碼:複製代碼 代碼如下:#!/bin/bashfunction setlogfile{ if ! [ -z "$1" ];
Time of Update: 2017-01-18
提問:
Time of Update: 2017-01-18
以下是shell代碼:create_xml.sh複製代碼 代碼如下:#! /bin/bash#author: dengzhaoqun#date: 201202/14outfile=outtabs=0put(){ echo '<'${*}'>' >> $outfile}put_head(){ put '?'${1}'?'}out_tabs(){ tmp=0 tabsstr="" while [ $tmp
Time of Update: 2017-01-18
使用Linux的程式員對輸入密碼這個舉動一定不陌生,在Linux下對使用者有嚴格的許可權限制,幹很多事情越過了許可權就得輸入密碼,比如使用超級使用者執行命令,又比如ftp、ssh串連遠程主機等等,如下圖:那麼問題來了,在指令碼自動化執行的時候需要輸入密碼怎麼辦?比如你的指令碼裡有一條scp語句,總不能在指令碼執行到這一句時手動輸入密碼吧。針對於ssh或scp命令,可能有人會回答是建立信任關係,關於建立ssh信任關係的方法請自行百度Google,只需要兩行簡單的命令即可搞定,但這並不是常規的解決方
Time of Update: 2017-01-18
簡單來說,這個技巧對應的是如下一種情境假設有文本如下複製代碼 代碼如下:ccccaaaabbbbddddbbbbccccaaaa現在需要對它進行去重處理,這個很簡單,sort -u就可以搞定,但是如果我希望保持文本原有的順序,比如這裡有兩個aaaa,我只是希望去掉第二個aaaa,而第一個aaaa在bbbb的前面,去重後仍舊要在它前面,所以我期望的輸出結果是複製代碼
Time of Update: 2017-01-18
複製代碼 代碼如下:#!/bin/sh# 擷取所在季度的第一天,到昨天的日期間隔# link:www.jb51.net# date:2013/2/28day=`date -d "1 days ago " "+%Y%m%d"`;year=`expr substr ${day} 1 4`;month=`expr substr ${day} 5 2`;s_date=$year"0101"if [ "$month" == "01" ] || [ "$month" == "02" ] || [
Time of Update: 2017-01-18
shell指令碼讀取資料有以下幾種方式:1.鍵盤輸入,預設2.從檔案中讀取3.通過管道命令傳遞echo的功能:\c :不換行\f :進紙\t :跳格\n :換行\表示轉義,例如:"\"/dev/rmt0"\"翻譯為,"/dev/rmt0"read:從鍵盤或檔案的某一行文本中讀取資訊,並將其賦給一個變數。複製代碼 代碼如下:[jb51]/>read namehello i am a regular user[jb51]/>echo $namehello i am a regular
Time of Update: 2017-01-18
說明:shell中數組的下標預設是從0開始的1、將字串放在數組中,擷取其長度複製代碼 代碼如下:#!/bin/bashstr="a b --n d"array=($str)length=${#array[@]}echo $lengthfor ((i=0; i<$length; i++))doecho ${array[$i]}done執行結果:[oracle@99bill-as9 array]$ sh length.sh4a--nd2)、列印字串:複製代碼
Time of Update: 2017-01-18
複製代碼 代碼如下:#!bin/sh # 在指定位置尋找指定尾碼的檔案,包括子目錄 # 用法: # findf $1 $2 # 第一個參數為尾碼 # 尋找指定尾碼的檔案並列印出來 # link:www.jb51.net# date:2013/2/26f() { list=`find $2|grep "/.$1/>"` for i in
Time of Update: 2017-01-18
複製代碼 代碼如下:#!/bin/bashdeclare gw=`route -n | grep -e '^0.0.0.0'`declare gwname=`echo $gw | grep -oe '\w*$'`declare gwip=`echo $gw | grep -oe '[0-9]\{2,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'`declare gwmac=`arp -n | grep -e $gwip | grep -oe '[0-
Time of Update: 2017-01-18
備份網站內容 複製代碼 代碼如下:#!/bin/bash#指定啟動並執行指令碼shell#運行指令碼要給使用者執行許可權bakdir=/backupmonth=`date +%m`day=`date +%d`year=`date +%Y`hour=`date +%k`min=`date +%M`dirname=$year-$month-$day-$hour-$minmkdir $bakdir/$dirnamemkdir $bakdir/$dirname/confmkdir
Time of Update: 2017-01-18
複製代碼 代碼如下:#/bin/bash# history#把以下代碼直接粘貼到/etc/profile後USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`HISTDIR=/var/log/.histif [ -z $USER_IP ]then USER_IP=`hostname`fiif [ ! -d $HISTDIR ]then mkdir -p