Shell 腳本 100 例《一》

1. 編寫 hello world 腳本
#!/bin/bash
echo "hello world"
 
2. 經過位置變量建立 Linux 系統帳戶及密碼
#!/bin/bash
#$1 是執行腳本的第一個參數,$2 是執行腳本的第二個參數
useradd    "$!"
echo "$2"  |  passwd  ‐‐stdin  "$2"
 
3. 每週 5 使用 tar 命令備份/var/log 下的全部日誌文件
#vim  /root/logbak.sh
#編寫備份腳本,備份後的文件名包含日期標籤,防止後面的備份將前面的備份數據覆蓋
#注意 date 命令須要使用反引號括起來,反引號在鍵盤<tab>鍵上面
tar    -czf    log-`date +%Y%m%d`.tar.gz    /var/log
 
# crontab ‐e                             #編寫計劃任務,執行備份腳本
00    03    *    *    5      /root/logbak.sh
 
4. 一鍵部署 LNMP(RPM 包版本)
#!/bin/bash
#使用 yum 安裝部署 LNMP,須要提早配置好 yum 源,不然該腳本會失敗
#本腳本使用於 centos7.2 或 RHEL7.2
yum ‐y install httpd
yum ‐y install mariadb mariadb‐devel mariadb‐server
yum ‐y install php  php‐mysql
 
systemctl start httpd mariadb
systemctl enable httpd mariadb
 
5. 實時監控本機內存和硬盤剩餘空間,剩餘內存小於 500M、根分區剩餘空間小於 1000M
時,發送報警郵件給 root 管理員
#!/bin/bash
#Author:丁丁歷險(Jacob)
#提取根分區剩餘空間
disk_size=$(df / |awk '/\//{print $4}')php

#提取內存剩餘空間
mem_size=$(free |awk '/Mem/{print $4}')
while :
do
#注意內存和磁盤提取的空間大小都是以 Kb 爲單位
if  [  $disk_size  ‐le  512000  ‐a  $mem_size  ‐le  1024000  ];then
     mail  ‐s  Warning  root  <<EOF
Insufficient resources,資源不足
EOF
fi
done
 
6. 腳本生成一個 100 之內的隨機數,提示用戶猜數字,根據用戶的輸入,提示用戶猜對了,
猜小了或猜大了,直至用戶猜對腳本結束。
#!/bin/bash
#Author:丁丁歷險(Jacob)
#RANDOM 爲系統自帶的系統變量,值爲 0‐32767 的隨機數
#使用取餘算法將隨機數變爲 1‐100 的隨機數
num=$[RANDOM%100+1]
 
#使用 read 提示用戶猜數字
#使用 if 判斷用戶猜數字的大小關係:‐eq(等於),‐ne(不等於),‐gt(大於),‐ge(大於等於),‐lt(小於),‐le(小
於等於)
while  :
do
      read ‐p  "計算機生成了一個 1‐100 的隨機數,你猜: "  cai
      if   [  $cai  ‐eq   $num  ];then
             echo   "恭喜,猜對了"
             exit
      elif  [  $cai   ‐gt   $num  ];then
             echo   "Oops,猜大了"
      else
             echo   "Oops,猜小了"
      fi
done
 
7. 檢測本機當前用戶是否爲超級管理員,若是是管理員,則使用 yum 安裝 vsftpd,若是不
是,則提示您非管理員(使用字串對比版本)
#!/bin/bash
if  [  $USER  ==  "root"  ];then
         yum  ‐y  install   vsftpd
else
        echo "您不是管理員,沒有權限安裝軟件"
fi
 
8. 檢測本機當前用戶是否爲超級管理員,若是是管理員,則使用 yum 安裝 vsftpd,若是不
是,則提示您非管理員(使用 UID 數字對比版本)mysql

#!/bin/bash
if  [  $UID  ‐eq  0  ];then
         yum  ‐y  install   vsftpd
else
        echo "您不是管理員,沒有權限安裝軟件"
fi
 
9. 編寫腳本:提示用戶輸入用戶名和密碼,腳本自動建立相應的帳戶及配置密碼。若是用戶
不輸入帳戶名,則提示必須輸入帳戶名並退出腳本;若是用戶不輸入密碼,則統一使用默
認的 123456 做爲默認密碼。
#!/bin/bash
read  ‐p  "請輸入用戶名: "   user
#使用‐z 能夠判斷一個變量是否爲空,若是爲空,提示用戶必須輸入帳戶名,並退出腳本,退出碼爲 2
#沒有輸入用戶名腳本退出後,使用$?查看的返回碼爲 2
if  [   ‐z  $user  ];then
      echo "您不需輸入帳戶名"
      exit 2
fi
#使用 stty ‐echo 關閉 shell 的回顯功能
#使用 stty  echo 打開 shell 的回顯功能
stty  ‐echo
read  ‐p  "請輸入密碼: "     pass
stty  echo
pass=${pass:‐123456}
useradd   "$user"
echo  "$pass"  |  passwd  ‐‐stdin   "$user"
 
10. 依次提示用戶輸入 3 個整數,腳本根據數字大小依次排序輸出 3 個數字
#!/bin/bash
read ‐p "請輸入一個整數:" num1
read ‐p "請輸入一個整數:" num2
read ‐p "請輸入一個整數:" num3
#無論誰大誰小,最後都打印 echo "$num1,$num2,$num3"
#num1 中永遠存最小的值,num2 中永遠存中間值,num3 永遠存最大值
#若是輸入的不是這樣的順序,則改變數的存儲順序,如:能夠將 num1 和 num2 的值對調
tmp=0
#若是 num1 大於 num2,就把 num1 和和 num2 的值對調,確保 num1 變量中存的是最小值
if [ $num1 ‐gt $num2 ];then   
 
 
  tmp=$num1
  num1=$num2
  num2=$tmp
fi
#若是 num1 大於 num3,就把 num1 和 num3 對調,確保 num1 變量中存的是最小值
if [ $num1 ‐gt $num3 ];then   
 
 
  tmp=$num1
  num1=$num3
  num3=$tmp
fi
#若是 num2 大於 num3,就把 num2 和 num3 對標,確保 num2 變量中存的是小一點的值算法

if [ $num2 ‐gt $num3 ];then
  tmp=$num2
  num2=$num3
  num3=$tmp
fi
 
echo "排序後數據爲:$num1,$num2,$num3"sql

相關文章
相關標籤/搜索