shell小技巧,自己用

2021-10-14 03:16:48 字數 2165 閱讀 6497

1.逗號分割字串為陣列

host="10.0.0.1,10.0.0.2,10.0.0.3"

host=($)

$=3$=10.0.0.1 10.0.0.2 10.0.0.3

2.檢視資料夾或檔案是否存在

if [ ! -d "`pwd`/report" ]; then

echo "建立資料夾`pwd`/report"

mkdir `pwd`/report

fiif [ ! -d "`pwd`/report/a.json" ]; then

echo "建立檔案`pwd`/report/a.json"

touch `pwd`/report/a.json

fi3.向空陣列中迴圈新增值

a=()

for((i=0;i<10;i++));

doa[$]=$i

done

4。用管道『|』進行復合命令

echo "aaaaa(bbb)" | sed "s/(bbb)/aaa/g"

ps -ef | grep benchmark | grep -v grep -c

5。獲取當前時間

ttime="`echo $(date "+%y-%m-%d %h:%m:%s")`"

6。sed中可以用轉義符號\(和\)來作為正規表示式,匹配字串的某一部分,然後使用\1,\2來表示哪個括號中的值

sed 's/"\([0-9]*\)\.*\([0-9]*\)"/"_\1_\2"/g'

sed  's  /     "\([0-9]*\)\.*\([0-9]*\)"       /       "_\1_\2"         /   g'

將類似於"1","1000","10.9","5.66","0.33"這樣的值,替換成"_1_","_1000_","_10_9_","_5_66_","_0_33_"

方便將數字轉成變數名。

7。獲取當前shell程序的pid

echo $$

8。多執行緒shell,需要其他執行緒在主程序停止執行的時候停止

在其他執行緒中加個主程序pid是否還在執行的判斷,不在就退出。

while true

donum="`ps -ef|grep shellname.sh | grep -v grep -c`"

if [ $(($num)) -eq 0 ] ;then

break

ficontinue

done

9。獲取檔案中的第一列資料

list=(`cat $ | awk ''`)

10。獲取檔案中除了第一列資料之外的資料

list=()

while read line; do

temp=`echo "$line"|awk ''`;

list[$]="$temp";

done < $

11.read命令不改變轉義符號

read -r -d ";" -u3 sql

附:

-a:將**後的字段依次儲存到指定的陣列中,儲存的起始位置從陣列的index=0開始。

-d:指定讀取行的結束符號。預設結束符號為換行符。

-n:限制讀取n個字元就自動結束讀取,如果沒有讀滿n個字元就按下回車或遇到換行符,則也會結束讀取。

-n:嚴格要求讀滿n個字元才自動結束讀取,即使中途按下了回車或遇到了換行符也不結束。其中換行符或回車算乙個字元。

-p:給出提示符。預設不支援"\n"換行,要換行需要特殊處理,見下文示例。例如,"-p 請輸入密碼:"

-r:禁止反斜線的轉義功能。這意味著"\"會變成文字的一部分。

-s:靜默模式。輸入的內容不會回顯在螢幕上。

-t:給出超時時間,在達到超時時間時,read退出並返回錯誤。也就是說不會讀取任何內容,即使已經輸入了一部分。

-u:從給定檔案描述符(fd=n)中讀取資料。

12.去除字串中多餘的空格空行

sql=$sql";"

tempsql=$

shell小知識小技巧

1 local config config 1,如果沒有第乙個引數,那麼config netowk 2 字串可以用 來比較 數字可以用 來比較 3 shell函式傳引數的時候,local var1 hello local var2 word 傳這兩個引數到shell函式 fun shell寫成 fu...

幾個shell小技巧

1.expr 命令 由於bash 是功能有限的直譯器,所以自身並沒有支援太多的算術運算,一切都是字串。所以如果涉及到算術運算,需要借助其他的工具,比如bc 功能比較強大的小工具 expr 和 算術擴充套件.expr 支援幾個常見的算術運算 取模 expr還支援常見的關係運算,比如 題外話 如果要想計...

shell指令碼小技巧

有個需求是,每隔4個小時會跑一遍資料收集的爬蟲,因為這個爬蟲指令碼寫的很爛,所以有時候進入死迴圈後,程序就永遠不遠停掉,因此需要寫個定時任務,定時清理這些無用程序。首先在shell上學習如何清理指定程序 ps ef grep v grep grep x cut c 10 14 xargs kill ...