1 編寫一個腳本使我們在寫一個腳本時自動生成"#!/bin/bash”這一行和注釋資訊。
#!/bin/bash
if ! grep "^#!" $1 &>/dev/null; then
cat &gt;&gt; $1 <&lt; EOF
# Author:
#Date & Time: `date +"%F %T"`
#Description:
EOF
fi
vim +5 $1
任意三個整數,判斷最大數。
echo "please enter three number:"
read -p "the first number is :" n1
read -p "the second number is:" n2
read -p "the third number is:" n3
let MAX=$n1
if [ $n2 -ge $n1 ]; then
MAX=$n2
if [ $n3 -ge $MAX ]; then
MAX=$n3
echo "the max number is $MAX."
求100以内偶數的和。
方法一:
sum=0
for I in {1..50}; do
sum=$(($sum+2*$I))
done
echo "the sum is $sum"
方法二:
let SUM=0
for I in $(seq 1 100); do
if [ $[$I%2] == 0 ]; then
let SUM+=$I
echo "the sum is $SUM."
利用for語句如何ping C類網,如何ping B類網。
ping C 類網
read –p “C network:” MYNET
PINGNET=`echo $MYNET | sed ‘s/\([0-9.]*\)\ .[0-9]*/\1/g’`
let I=1
while [ $I –le 254 ]; do
ping –c1 –W1 $PINGNET.$I &>/dev/null
[ $? –eq 0 ] && echo “$PINGNET.$I online.” || echo “$PINGNET.$I offline.”
let I++
ping B 類網
read –p “B network:” MYNET
PINGNET=`echo $MYNET | sed ‘s/\([0-9]\{1,3\}\.[0-9]\{1,3\}\)\..*/\1/g’`
for P in {0..255}; do
for I in {1..255}; do
if ping -c1 -W2 $PINGNET.$P.$I &&gt;/dev/null; then
echo "$PINGNET.$P.$I is online."
else
echo "$PINGNET.$P.$I is offline."
提示輸入一個使用者名,判斷使用者是否存在,如果存在,顯示一下使用者預設的shell。
#!bin/bash
read –p “please input a username:” USER
if cut –d:-f1 /etc/passwd | grep “^$USER$” &&gt; /dev/null ;then
MYBASH=`grep “^$USER: ” /etc/passwd | cut –d : -f7`
echo “ ${USER}’s shell is $MYBASH”
echo “$USER not exists.”
exit 4
練習:監控系統登入人數,超過四個,顯示已經達到四個,五秒鐘檢查一下,并退出腳本(exit)
#! /bin/bash
read –p “A user:” MYUSER
cut –d : -f1 /etc/passwd | grep “^$MYUSER” &&gt; /dev/null || exit 6
let COUNT=`who | grep “^$MYUSER” | wc –l`
until [ $COUNT –ge 4 ]; do
sleep 5
let COUNT=`who | grep “^$MYUSER” | wc -l`
echo “$MYUSER loged 4 times.”
用sed語句實作:檢視/etc/sysconfig/network-scripts/ifcfg-eth0 目錄下,如果
BOOTPROTO=dhcp,把bootp改成static,并手動添加IP位址和子網路遮罩:
IPADDR= NETMASK= 。
IFFILE=’/root/ifcfg-eth0’
read –p “IPaddr[192.168.0.1]:” MYIP
[ -z $MYIP ] && MYIP=’192.168.0.1’
echo “please choose your netmask [1,2,3]:”
cat <&lt; EOF
‘1’)
MYMASK =’255.255.255.0’
‘2’)
MYMASK =’255.255.0.0’
‘3’)
MYMASK =’255.0.0.0’
read CHOICE
case $CHOICE in
MYMASK=’255.255.255.0’ ;;
MYMASK=’255.255.0.0’ ;;
MYMASK=’255.0.0.0’ ;;
*)
[ -z $CHOICE ] && read –p “please input your mask:” MYMASK || MYMASK=”255.255.255.0” ;;
esac
[ -z $MYMASK ] && MYMASK=255.255.255.0
if grep –E “^BOOTPROTO=(dhcp)|(bootp)$” $IFFILE&>/dev/null; then
sed –i “ s/^BOOTPROTO=.*/BOOTPROTO=static/g” $IFFILE
grep “^IPADDR=.*” $IFFILE &&gt;/dev/null && sed –i “s/IPADDR=.*/IPADDR=$MYIP/g” $IFFILE || sed –i ” /BOOTPRO=.*/a \IPADDR=$MYIP” $IFFILE
grep “^NETMASK=.*” $IFFILE &&gt;/dev/null && sed –i “s/NETMASK=.*/NETMASK=$MYMASK/g” $IFFILE || sed –i ” /BOOTPRO=.*/a \NETMASK=$NETMASK” $IFFILE
本文轉自 490999122 51CTO部落格,原文連結:http://blog.51cto.com/lyp0909/463602,如需轉載請自行聯系原作者