一、特殊變量
$0:當前腳本的文件名 $num:num爲從1開始的數字,$1是第一個參數,$2是第二個參數,${10}是第十個參數 $#:傳入腳本的參數的個數 $*:所有的位置參數(作爲單個字符串) $@:所有的位置參數(每個都作爲獨立的字符串)。 $?:當前shell進程中,上一個命令的返回值,如果上一個命令成功執行則$?的值爲0,否則爲其他非零值,常用做if語句條件 $$:當前shell進程的pid $!:後臺運行的最後一個進程的pid $-:顯示shell使用的當前選項 $_:之前命令的最後一個參數
二、數組循環示例
#!/bin/bash net=($(ifconfig |grep ether|awk '{print $2}')) for ((i=0;i<${#net[*]};i++)) do echo "${net[$i]}" done
#!/bin/bash list=(1 2 3) for ((i=0;i<${#list[*]};i++)) do echo $[${list[$i]}*$1] done # 取得數組元素的個數 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得數組單個元素的長度 lengthn=${#array_name[n]}
三、讀取指定行並寫入文件
#!/bin/bash file=/etc/passwd num=(20 40 60 56 32 25) for ((i=0;i<${#num[*]};i++)) do head -${num[$i]} $file |tail -1 >>/tmp/test.log done
四、ping某個網段的主機,顯示是否存活
#!/bin/bash for i in `seq 100 105`;do ping -c 1 192.168.0.$i >>/dev/null && echo "192.168.0.$i is up" || echo "192.168.0.$i id down" done # &&表示前面執行成功才繼續執行後面 # ||表示或者