加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

几个不错的Shell脚本

发布时间:2020-12-13 20:04:33 所属栏目:PHP教程 来源:网络整理
导读:几个Shell脚本的例子,觉得还不错。 【 例子:001 】 判断输入为数字,字符或其他 #!/bin/bashread -p Enter a number or string here: inputcase $input in [0⑼]) echo -e Good job,Your input is a numberic! ;;[a-zA-Z]) echo -e Good job,Your input is

几个Shell脚本的例子,觉得还不错。

例子:001判断输入为数字,字符或其他

#!/bin/bash read -p "Enter a number or string here:" input case $input in [0⑼]) echo -e "Good job,Your input is a numberic! " ;; [a-zA-Z]) echo -e "Good job,Your input is a character! " ;; *) echo -e "Your input is wrong,input again! " ;; 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⑴00%] ('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] fi done echo "Exiting."

例子:003】自减输出

[scriptname: doit.sh] while (( $# > 0 )) do echo $* shift done /> ./doit.sh a b c d e a b c d e b c d e c d e d e e
例子:004】在文件中添加前缀

# 人名列表 # cat namelist Jame Bob Tom Jerry Sherry Alice John # 脚本程序 # cat namelist.sh #!/bin/bash for name in $(cat namelist) do echo "name= " $name done echo "The name is out of namelist file" # 输出结果 # ./namelist.sh name= Jame name= Bob name= Tom name= Jerry name= Sherry name= Alice name= John
例子:005】批量测试文件是不是存在

[root@host ~]# cat testfile.sh #!/bin/bash for file in test*.sh do if [ -f $file ];then echo "$file existed." fi done [root@host ~]# ./testfile.sh test.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.
】用指定大小文件填充硬盘

[root@host ~]# df -ih /tmp Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/vg00-lvol5 1000K 3.8K 997K 1% /tmp [root@host ~]# cat cover_disk.sh #!/bin/env bash counter=0 max=3800 remainder=0 while true do ((counter=counter+1)) if [ ${#counter} -gt $max ];then break fi ((remainder=counter%1000)) if [ $remainder -eq 0 ];then echo -e "counter=$counter date=" $(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 fi done echo "Done!" [root@host ~]# ./cover_disk.sh counter=1000 date= Wed Sep 10 09:20:39 HKT 2014 counter=2000 date= Wed Sep 10 09:20:48 HKT 2014 counter=3000 date= Wed Sep 10 09:20:56 HKT 2014 cat: write error: No space left on device Failed to write file to Disk. dd if=/dev/zero of=testfile bs=1M count=1
例子:006】通过遍历的方法读取配置文件

[root@host ~]# cat hosts.allow 127.0.0.1 127.0.0.2 127.0.0.3 127.0.0.4 127.0.0.5 127.0.0.6 127.0.0.7 127.0.0.8 127.0.0.9 [root@host ~]# cat readlines.sh #!/bin/env bash i=0 while read LINE;do hosts_allow[$i]=$LINE ((i++)) done < hosts.allow for ((i=1;i<=${#hosts_allow[@]};i++)); do echo ${hosts_allow[$i]} done echo "Done" [root@host ~]# ./readlines.sh 127.0.0.2 127.0.0.3 127.0.0.4 127.0.0.5 127.0.0.6 127.0.0.7 127.0.0.8 127.0.0.9 Done
例子:007】简单正则表达式利用

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


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读