shell小脚本集合

0.vim脚本规范

vi ~/.vimrc

autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
         if expand("%:e")=='sh'
             call setline(1,"#!/bin/bash")
             call setline(2,"#")
             call setline(3,"#*************************************")
             call setline(4,"#author:                zyx")
             call setline(5,"#file:                  ".expand("%"))
             call setline(6,"#email:                 [email protected]")
             call setline(7,"#version:               1.0")
             call setline(8,"#date:                  ".strftime("%Y-%m-%d"))
             call setline(9,"#description:           test script")
             call setline(10,"#*************************************")
         endif
endfunc

1.猜数字

#!/bin/bash
x=$[RANDOM%10+1]
while read -p "please your number1-10:" num;do
   #echo $num
    if [ "$num" -eq "$x" ];then
       echo your gueess right.
       break
    elif [ "$num" -lt "$x" ];then
       echo letter
    else
       echo  more
    fi
done

2.棋盘

#!/binbash
red="\033[41m"
blue="\033[44m"
cloend="\033[0m"
#echo -e "$red  $cloend"
for j in {1..8};do
  if [ $[j%2] -eq 1 ];then
   for i in {1..8};do
       if [ $[i%2] -eq 1 ];then
            echo -e "$red  $cloend\c"
       else
           echo -e "$blue  $cloend\c"
       fi
   done
  elif [ $[j%2] -eq 0 ];then
      for k in {1..8};do
         if [ $[k%2] -eq 0 ];then
           echo -e "$red  $cloend\c"
         else
           echo -e "$blue  $cloend\c"
         fi
      done
   fi
      echo
done

3.九九乘法表

#!/bin/bash
for i in {1..9};do
    for j in $(seq $i);do
       let k=i*j
       echo -e "$i x $j = $k\t\c"
       #echo -e "${j}x$i=$[j*i]\t\c"
    done
    echo
done

4.echo yes or no

#!/bin/bash
read -p "Input yes or no: " yn
[[ "$yn" =~ ^[yY]([Ee][Ss])?$ ]] && { echo yes;exit 0; }
[[ "$yn" =~ ^[Nn][Oo]?$ ]] && { echo no;exit 1; }
echo please input yes or no.

5.复制Linux命令和库

#!/bin/bash

f_dir=/mnt/sysroot

input_cmd(){
    while :;do
 read -p "plsease input cmd or quit: " cmd
       if [ -z "$cmd" ];then
       echo please input cmd
       continue
    elif [ $cmd == "quit" ];then
       exit 88
    elif  ! which $cmd &> /dev/null;then
       echo no $cmd commend
    continue
    else
       break
    fi
 done
}

cp_cmd(){
    cmd_name=`which --skip-alias $cmd`
    cmd_dir=`dirname ${cmd_name}`
 [ -d ${f_dir}${cmd_dir} ] || mkdir -p ${f_dir}${cmd_dir}
 [ ! -f ${f_dir}${cmd_name} ] && { cp  ${cmd_name} ${f_dir}${cmd_name};echo $cmd copy finshed.; } || echo $cmd is exist.
}

cp_cmd_lib(){
    for lib_name in `ldd /usr/bin/$cmd | sed -r '1d;s/.*[[:space:]](\/.*) .*/\1/g'`;do
     lib_dir=`dirname ${lib_name}`
  [ -d ${f_dir}${lib_dir} ] || mkdir -p ${f_dir}${lib_dir}
     [ -f ${f_dir}${lib_name} ] || cp  ${lib_name} ${f_dir}${lib_name}
 done
    echo "backup ${cmd}'s library finished"
}

main(){
    while :;do
       input_cmd
       cp_cmd
       cp_cmd_lib
    done
}

main

6.斐波那契数列(兔子数列)

#!/bin/bash
fact(){
   if [ $1 -eq 0 ];then
      echo 0
   elif [ $1 -eq 1 ];then
      echo 1
   else
      echo $[`fact $[$1-1]`+`fact $[$1-2]`]
   fi
}

fact $1
发布了27 篇原创文章 · 获赞 0 · 访问量 813

猜你喜欢

转载自blog.csdn.net/apple2417/article/details/104087633