幾個不錯的Shell指令碼

來源:互聯網
上載者:User

標籤:shell   小程式   指令碼   

幾個Shell指令碼的例子,覺得還不錯。

例子:001】判斷輸入為數字,字元或其他

#!/bin/bashread -p "Enter a number or string here:" inputcase $input in   [0-9]) echo -e "Good job, Your input is a numberic! \n" ;;[a-zA-Z]) echo -e "Good job, Your input is a character! \n" ;;       *) echo -e "Your input is wrong, input again!   \n"  ;;esac

例子:002】求平均數

#!/bin/bash# Calculate the average of a series of numbers.SCORE="0"AVERAGE="0"SUM="0"NUM="0"while true; do  echo -n "Enter your score [0-100%] ('q' for quit): "; read SCORE;  if (("$SCORE" < "0"))  || (("$SCORE" > "100")); then    echo "Be serious.  Common, try again: "  elif [ "$SCORE" == "q" ]; then    echo "Average rating: $AVERAGE%."    break  else    SUM=$[$SUM + $SCORE]    NUM=$[$NUM + 1]    AVERAGE=$[$SUM / $NUM]  fidoneecho "Exiting."

例子:003】自減輸出

[scriptname: doit.sh]while (( $# > 0 ))do  echo $*  shiftdone         /> ./doit.sh a b c d ea b c d eb c d ec d ed ee
例子:004】在檔案中添加首碼

# 人名列表# cat namelistJameBobTomJerrySherryAliceJohn# 指令碼程式# cat namelist.sh#!/bin/bashfor name in $(cat namelist)do        echo "name= " $namedoneecho "The name is out of namelist file"# 輸出結果# ./namelist.shname=  Jamename=  Bobname=  Tomname=  Jerryname=  Sherryname=  Alicename=  John
例子:005】批量測試檔案是否存在

[[email protected] ~]# cat testfile.sh      #!/bin/bashfor file in test*.shdo  if [ -f $file ];then     echo "$file existed."  fidone[[email protected] ~]# ./testfile.shtest.sh existed.test1.sh existed.test2.sh existed.test3.sh existed.test4.sh existed.test5.sh existed.test78.sh existed.test_dev_null.sh existed.testfile.sh existed.
例子:005】用指定大小檔案填充硬碟

[[email protected] ~]# df -ih /tmpFilesystem            Inodes   IUsed   IFree IUse% Mounted on/dev/mapper/vg00-lvol5                       1000K    3.8K    997K    1% /tmp[[email protected] ~]# cat cover_disk.sh#!/bin/env bashcounter=0max=3800remainder=0while truedo    ((counter=counter+1))    if [ ${#counter} -gt $max ];then        break    fi    ((remainder=counter%1000))    if [ $remainder -eq 0 ];then        echo -e "counter=$counter\tdate=" $(date)    fi    mkdir -p /tmp/temp    cat < testfile > "/tmp/temp/myfile.$counter"    if [ $? -ne 0 ];then        echo "Failed to write file to Disk."        exit 1    fidoneecho "Done!"[[email protected] ~]# ./cover_disk.shcounter=1000    date= Wed Sep 10 09:20:39 HKT 2014counter=2000    date= Wed Sep 10 09:20:48 HKT 2014counter=3000    date= Wed Sep 10 09:20:56 HKT 2014cat: write error: No space left on deviceFailed to write file to Disk.dd if=/dev/zero of=testfile bs=1M count=1
例子:006】通過遍曆的方法讀取設定檔

[[email protected] ~]# cat hosts.allow127.0.0.1127.0.0.2127.0.0.3127.0.0.4127.0.0.5127.0.0.6127.0.0.7127.0.0.8127.0.0.9[[email protected] ~]# cat readlines.sh#!/bin/env bashi=0while read LINE;do    hosts_allow[$i]=$LINE    ((i++))done < hosts.allowfor ((i=1;i<=${#hosts_allow[@]};i++)); do    echo ${hosts_allow[$i]}doneecho "Done"[[email protected] ~]# ./readlines.sh127.0.0.2127.0.0.3127.0.0.4127.0.0.5127.0.0.6127.0.0.7127.0.0.8127.0.0.9Done
例子:007】簡單Regex應用

[[email protected] ~]# cat regex.sh#!/bin/env sh#Filename: regex.shregex="[A-Za-z0-9]{6}"if [[ $1 =~ $regex ]]then  num=$1  echo $numelse  echo "Invalid entry"  exit 1fi[[email protected] ~]# ./regex.sh 123abc123abc#!/bin/env bash#Filename: validint.shvalidint(){    ret=`echo $1 | awk '{start = match($1,/^-?[0-9]+$/);if (start == 0) print "1";else print "0"}'`    return $ret}validint $1if [ $? -ne 0 ]; then    echo "Wrong Entry"    exit 1else    echo "OK! Input number is:" $1fi


幾個不錯的Shell指令碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.