以前的shell筆記
小知識
- shell指令碼if中的表示式條件可通過man test檢視,比如-a就相當於&&。 2.
例項一:模擬登陸
#!/bin/bash
echo -n "login:"
read name
echo -n "password:"
read passwd
if [ $name = "wilcohuang" -a $passwd = "31415926yhwy." ];
then echo "the host and password is right"
else echo "input is error!"
fi
例項二:比較兩個數的大小
#!/bin/bash
echo "please enter two number"
read a
read b
if test $a -eq $b
then echo "no.1 = no.2"
elif test $a -gt $b
then echo "no.1 > no.2"
else echo "no.1 < no.2"
fi
例項三:搜尋某個目錄下檔案是否存在
#!/bin/bash
echo "enter a file name:"
read a
if test -e /data/home/wilcohuang/shell/$a
then echo "the file is exist!"
else echo "the file is not exist!"
fi
例項四:for迴圈的使用
#!/bin/bash
clear
for num in 1 2 3 4 5 6 7 8 9 10
do
echo $num
done
例項五:命令列輸入
#!/bin/bash
echo "Please enter a user:"
read a
b=$(whoami)
if test $a = $b
then echo "the user is running"
else echo "the user is not running"
fi
例項六:刪除當前目錄下大小為0的檔案
#!/bin/bash
for filename in `ls`
do
if test -d $filename
then continue
else a=$(ls -l $filename | awk '{print $5}')
if test $a -eq 0
then rm -rf $filename
fi
fi
done
例項七:如果某目錄下有檔案,那麼將其檔案系統大小改為3G
#!/bin/bash
while line=`ls /data/home/wilcohuang/shell/test1`
do
if test $line = ""
then echo "NULL"
sleep 1
else echo $line
chfs -a size=3G /data/home/wilcohuang/shell/test1
exit 0
fi
done
例項八:測試IP地址
#!/bin/bash
for i in {1..9}
do
echo "the number of $i computer is"
ping -c 1 192.168.0.$i
done
ping: -c count次數
例項九:從0.sh中讀取內容並列印
#!/bin/bash
while read line
do
echo $line
done < 0.sh
例項十:從0.sh中讀取內容並+1
#!/bin/bash
test -e 0.sh
while read line
do
a=$line+1
echo $a
done < 0.sh
例項十一:普通無引數函式
#!/bin/bash
p()
{
echo "hello"
}
p
例項十二:給函式傳遞引數
#!/bin/bash
p_num()
{
num=$1
echo $num
}
for n in $@
do
p_num $n
done
命令:bash para.sh 10
例項十三:獲取本機IP地址
ifconfig | grep 'inet addr:' | awk '{print $2}' | sed 's/addr://g'
`
[root@www ~]# sed [-nefr] [動作]
選項與引數:
-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的資料一般都會被列出到終端上。但如果加上 -n 引數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來。
-e :直接在命令列模式上進行 sed 的動作編輯;
-f :直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的 sed 動作;
-r :sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
-i :直接修改讀取的檔案內容,而不是輸出到終端。
動作說明: [n1[,n2]]function
n1, n2 :不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作是需要在 10 到 20 行之間進行的,則『 10,20[動作行為] 』
function:
a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;
i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p :列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起執行~
s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!
`
例項十四:查詢最大檔案
#!/bin/bash
a=0
for name in *.*
do
b=$(ls -l $name | awk '{print $5}')
if test $b -ge $a
then a=$b
namemax=$name
fi
done
echo "the max file is $namemax"
例項十五:查詢本網段的所有ip
a=1
while :
do
a=$(($a+1))
if test $a -gt 255
then break
else
echo $(ping -c 1 10.204.172.$a | grep "ttl" | awk '{print $4}' | sed 's/://g')
ip=$(ping -c 1 10.204.172.$a | grep "ttl" | awk '{print $4}' | sed 's/://g')
if [ -n "$ip" ];
then
echo $ip >> ip.txt
fi
fi
done
注意:shell中比較字串必須加雙引號,否則結果不正確,正確做法如:
a=""
if [ -n "$a" ];
then
echo 'yes'
else
echo 'no'
fi
例項十六:case練習
#!/bin/bash
clear
echo "enter a numbe from 1 to 5:"
read num
case $num in
1)echo "you enter 1"
;;
2)echo "you enter 2"
;;
3)echo "you enter 3"
;;
4)echo "you enter 4"
;;
*)echo 'default'
;;
esac
例項二十:yes/no返回不同結構
#!/bin/bash
clear
echo "enter [y/n]:"
read a
case $a in
y|Y|Yes|YES)echo "you enter $a"
;;
n|N|NO|no)echo "you enter $a"
;;
*)echo 'error'
;;
esac
例項二十二:使用內建命令
#!/bin/bash
clear
echo "hello,$USER"
echo "Today's date id `date`"
例項二十三:列印所有沒有密碼的使用者
cat /etc/shadow | grep '!!' | awk -F ":" '{print $1}'
例項二十三:檢查埠號是否啟動
#!/bin/bash
n=1
echo "檢查nginx服務..."
while true
do
if test $n -gt 20
then
echo "nginx服務啟動失敗"
break
fi
sleep 5
n=$(($n+1))
port=`netstat -natp | grep "0.0.0.0:80"`
if [ ${#port} -gt 3 ];
then
echo "nginx服務已經啟動"
break
fi
done
相關文章
- shell 筆記筆記
- 【Shell】sort 筆記筆記
- shell學習筆記筆記
- 【SHELL】命令使用筆記筆記
- Shell指令碼學習筆記指令碼筆記
- 【shell筆記>命令】grep,sed,awk筆記
- Shell 學習筆記 基礎筆記
- POSIX-shell學習筆記筆記
- shell程式設計學習筆記(二):Shell中變數的使用程式設計筆記變數
- shell指令碼程式設計筆記指令碼程式設計筆記
- Hbase shell 常用命令筆記筆記
- linux shell 指令碼攻略筆記Linux指令碼筆記
- shell指令碼學習筆記-1指令碼筆記
- 以前的學習筆記整理:第二層交換和生成樹協議(STP)筆記協議
- Linux分享筆記:shell終端的介紹Linux筆記
- MongoDB 學習筆記之常用 shell 命令MongoDB筆記
- Linux 筆記分享四:Shell 基礎Linux筆記
- Shell學習筆記_時間計算筆記
- 1.Autodock安裝---Autodock五部曲(抄錄以前的手寫筆記)筆記
- 清空系統日誌shell scripts——自學筆記筆記
- Linux Shell 程式設計學習筆記Linux程式設計筆記
- 《Shell指令碼學習指南》學習筆記指令碼筆記
- shell筆記---2008-06-05筆記
- 2008-06-07shell筆記筆記
- 【連結】LINUX SHELL指令碼攻略筆記[速查]Linux指令碼筆記
- mit6.828筆記 - lab5(下)- Spawn and ShellMIT筆記
- 翻了翻以前寫的文件,html+css+js記錄HTMLCSSJS
- shell 筆試題筆試
- shell指令碼程式設計學習筆記-運算子指令碼程式設計筆記
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- 【Linux學習筆記29】shell指令碼基礎Linux筆記指令碼
- android開發筆記之ADB Shell CommandsAndroid筆記
- 2008-06-06shell學習筆記筆記
- 2008-6-7 下千shell筆記筆記
- 2008-6-9 shell筆記彙總筆記
- 2008-06-06shell學習筆記 2筆記
- hadoop學習筆記(11)——hbase shell簡單操作示例Hadoop筆記
- 《通過指令碼檢視哪些ip被佔用》shell筆記指令碼筆記