當前位置:首頁 » 編程軟體 » shell腳本實例大全

shell腳本實例大全

發布時間: 2024-11-21 14:32:28

❶ shell使用getopts編寫一個腳本

下面是一個簡單例子(腳本為getopt):

#/bin/bash
echo $0
echo $*
while getopts ":a:bc" opt
do
case $opt in
a )
echo $OPTARG
echo $OPTIND;;
b )
echo "b $OPTIND";;
c )
echo "c $OPTIND";;
? )
echo "error"
exit 1;;
esac
done
echo $OPTIND
echo $*
shift $(($OPTIND - 1))
echo $*
echo $0

運行sh getopt.sh -a 12 -b -c 34 -m
輸出:
getopt.sh
-a 12 -b -c 34
12
3
b 4
c 5
5
-a 12 -b -c 34
34
getopt.sh

可以得出一些結論:
1、$0在用sh 或者 ./執行腳本時,指的是腳本名,用source或.執行時,永運是bash,這也反應了sh 或者 ./執行腳本的原理和source的方式是不同的.
2、$1 (1....n)指的第一個參數到....第n個參數
3、OPTARG存儲相應選項的參數 OPTIND指向的是下一個參數的index
4、shift 會改變參數的順序,通過左移去掉某些參數
5、getopts檢測到非法參數就會停止,比如上例中遇到34就會終止,並不會去檢測-m了,也就是說只要前一個參數是合法的(包含在option_string中的),就會繼續檢測下一個參數。

❷ shell腳本,實現腳本ip地址變換,每次輸出不同的ip地址。

先看效果:

[root@mailtmp]#./runplayload.shiplist.txt-s192.168.33.34-40
Nosuchip【192.168.33.35】in【iplist.txt】
1--192.168.33.34
2--192.168.33.36
3--192.168.33.37
4--192.168.33.38
5--192.168.33.39
6--192.168.33.40
[root@mailtmp]#./runplayload.shiplist.txt-s192.168.33.34-192.168.33.40
Nosuchip【192.168.33.35】in【iplist.txt】
1--192.168.33.34
2--192.168.33.36
3--192.168.33.37
4--192.168.33.38
5--192.168.33.39
6--192.168.33.40
[root@mailtmp]#


看一下iplist.txt文本格式

[root@mailtmp]#catiplist.txt
192.168.33.34
192.168.33.36-192.168.33.40
192.168.33.200
192.168.33.204-210
192.168.33.231


腳本正文:

#!/bin/bash
#------------------------------------------
#Copyritht(C),[email protected]
#腳本名:
#腳本位置:
#腳本用途:
#腳本修改歷史:
#<作者><日期><版本><描述>
#老耿2015/07/131.0創建
#版權:GPL
#-------------------------------------------
./root/.bash_profile
#定義ip個數
r=6
#傳參判斷
echo$3|grep-q"[0-9]-[0-9]";stat=$?#這里在邏輯上應該先判斷存不存在$3
if[$#-ne3-o"$2"!="-s"-o${stat}-ne0];then
if[$stat-ne0];then
echo"腳本使用說明:
COMMAND文件名-sip范圍
例:sh./run_playload.shiplist.txt-s192.168.33.20-50
或sh./run_playload.shiplist.txt-s192.168.33.20-192.168.33.50"
exit
fi
fi
if[!-f$1];then
echo"文件【$1】不存在!"
exit
fi
#iplist.txt文件格式轉換
iplist=`cat$1|awk-F'[-.]''{if($0~/-/){sub(/-.*$/,"",$4);for(i=$4;i<=$NF;i++){print$1"."$2"."$3"."i}}elseprint$0}'`
#xx.xx.xxipv4前三個位元組
ip1="`echo$3|sed-r's/.[0-9]+-.*$//'`"
#起始ip最後一個位元組
ip2="`echo$3|awk-F'.''{sub(/-.*$/,"",$4);print$4}'`"
#結束ip最後一個位元組
ip3="`echo$3|awk-F'[-.]''{print$NF}'`"
#如果起始ip大於結束ip,則兩個互換
if(($ip2>$ip3));then
ip_tmp=$ip2
ip2=$ip3
ip3=$ip_tmp
fi
#合並完整的ip,存在ip()里
ip=()
foriin`seq${ip2}${ip3}`
do
ipp="${ip1}.${i}"
echo"${iplist}"|grep-wq"${ipp}"
if[$?-ne0];then
echo"Nosuchip【${ipp}】in【$1】"
else
ip=(${ip[*]}${ipp})
fi
done
#判斷ip()不為空的情況
if[-n"${ip[*]}"];then
#定義ip個數
#r=6
#判斷ip取值個數,分兩種情況處理
if((${r}<=${#ip[@]}));then
foriin`seq${r}`
do
letj=$i-1
echo"${i}--${ip[j]}"
done
else
for((i=0;i<${#ip[@]};i++))
do
letj=$i+1
echo"${j}--${ip[i]}"
done
echo"WARNING:受范圍限制,未能取到完整的${r}個ip!"
fi
fi

❸ 用shell寫一個腳本一個文檔裡面的100萬條URL下載.

#!/bin/bash
whilereadline
do
wget$line&>/dev/null
done<urlfile.txt

❹ 寫一個簡單的shell腳本或Python腳本

url="/File"
for ((i=1;i<21;i++))
do
mkdir -p ${url}/File$i
touch ${url}/File$i/text{1..3}
touch ${url}/File$i/{1..20}text
done
這個url意思是您要創建的文件夾的位置 ,自己可以更改為想要的目錄,這是shell腳本,我是在centos里用的,,別的不知道

❺ 編寫以下shell腳本,保存為/exam/shell目錄下的(1.sh 2.sh 3.sh):

1.取出/etc/passwd文件中的用納圓戶名和UID的欄位,並將輸出結果以UID的大小順序排列;
[root@localhost shell]# cat 1.sh
#!/bin/bash
awk -F: '{print $3,$1}' /etc/passwd|sort -n

2.判斷漏信輸入的數值是奇數還是偶數;
[root@localhost shell]# cat 2.sh
#!/bin/bash
read num
if [ `expr $num % 2` = '0' ];then
echo "the number is 偶數"
else
echo "the number is 奇數"
fi

3.批量創建30個用戶,用戶洞搜塌名為exam1~exam30,用戶密碼統一為gdlclinux
[root@localhost shell]# cat 3.sh
#!/bin/bash
for((i=1;i<=30;i++))
do
useradd exam$i
echo gdlclinux|passwd --stdin exam$i
done

熱點內容
少兒計算機編程考級 發布:2024-11-21 17:07:10 瀏覽:248
上傳qq頭像很模糊怎麼辦 發布:2024-11-21 17:04:51 瀏覽:850
人的腳本 發布:2024-11-21 16:58:24 瀏覽:458
貼吧上傳失敗 發布:2024-11-21 16:52:26 瀏覽:724
滲透linux系統 發布:2024-11-21 16:52:24 瀏覽:874
安卓如何找到界面上的各種控制項 發布:2024-11-21 16:46:15 瀏覽:79
男生六位鎖屏密碼一般是什麼 發布:2024-11-21 16:42:38 瀏覽:82
安卓的摩爾庄園設置在哪裡 發布:2024-11-21 16:42:26 瀏覽:517
和平精英如何分辨蘋果與安卓 發布:2024-11-21 16:27:56 瀏覽:892
3dplus存儲器 發布:2024-11-21 16:24:03 瀏覽:738