shell例子记录

1.模仿轮替显示
echo red>a.txt
echo green >b.txt
echo yellow >c.txt

#!/bin/bash

while :  /*while: 这是做了一个死循环,:和true一样*/
do
clear  /*运行前清屏幕*/
echo "one:`cat a.txt`"
echo "two:`cat b.txt`"
echo "three:`cat c.txt`"     /*先显示ABC对应的内容*/
echo
sleep 2  /*脚本停留两秒,因为脚本运行很快,眼睛不好看到效果*/
tmp=$(cat a.txt)  /*先把a.txt里面的内容暂存到一个容器*/
cat b.txt > a.txt
cat c.txt > b.txt
echo $tmp > c.txt  /*实现三个文件中内容的替换*/
done
下面这段是直接在shell下面敲出的命令而不是写进脚本,其实是一样的,但是这样可以锻炼写命令的能力,很有助于自己练习shell
while :; do clear; echo "one:`cat a.txt`"; echo "two:`cat b.txt`"; echo "three:`cat c.txt`"; echo; sleep 2; tmp=$(cat a.txt); cat b.txt >a.txt; cat c.txt >b.txt; echo $tmp >c.txt; done


2.用case些一个用户选择菜单,跟据用户的输入相应打印信息。
#!/bin/bash
        echo
        echo -e "\tp\ttype cpuinfo"
        echo -e "\tm\ttype  meminfo"
        echo -e "\td\tdisk info"
        echo -e "\th\tfor help"
        echo -e "\tq\tquit the scripts"
        echo
key=1   /*用户自定义的变量最好小写,因为系统变量都是大写,这样不至于在脚本中系统变量和用户自定义变量共存时不好分辨*/

while [ $key -eq 1 ]   /*死循环*/
do
        read -p 'please choice (type h for help):' choice    /*read -p打印字符*/
        case $choice in
                D|d|disk|DISK)
                        df -Th;;
                P|p|cpu|CPU)
                        awk -F: '$1 ~ /model name/ {print $2} $1 ~ /processor/ {print $0}' /proc/cpuinfo;;
                M|m|mem|MEM)
                        awk -F: 'NR<5 {print $0}' /proc/meminfo;;
                q|Q|quit|exit)
                        key=0;;  /*key这个变量不等于1,便退出死循环了*/
                *)
                        clear
                        echo
                        echo -e "\tp\ttype cpuinfo"
                        echo -e "\tm\ttype  meminfo"
                        echo -e "\td\tdisk info"
                        echo -e "\th\tfor help"
                        echo -e "\tq\tquit the scripts"
                        echo
        esac
done
echo "BYEBYE"


3.打印1-10一层层添加效果如下:
for i in {1..10};do file="$file $i" && echo $file;done
/*file="$file $i"对file变量不断追加内容*/
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10


4.找出目录下所有的txt文本文件,查看内容并判断是否做删除处理,在处理最后统计删除的数量和文件名称。

#!/bin/bash

for files in $(find . -maxdepth 1 -type f -name "*.txt")
do
        echo
        echo "File: $files"
        awk 'NR<=3 {print "line"NR ": " $0}' $files
        echo
        key=1
        while [ $key == 1 ]
                do
                        read -p "delete it?(Y/N):" choice
                                case $choice in
                                        Y|y|YES|yes)
                                                rm -rf $files
                                                ((count++))
                                                deleted="$deleted $files"
                                                echo "$file has been deleted!"
                                                key=0
                                                ;;
                                        N|n|NO|no)
                                                echo "$file was not been deleted"
                                                key=0
                                                ;;
                                esac
                done
done
echo "all the txt has been processed!!"
echo "file deleted:"$deleted
echo "file counts:"$count
echo

本文出自 “追求卓越,成功迎面而来” 博客,转载请与作者联系!

你可能感兴趣的:(shell,职场,记录,例子,休闲)