几个shell小程序

说明

sudo cp hello calc mcp fileinfo guessnum /bin/

HelloShell(/ bin中/你好)

#!/bin/bash
#↑声明shell解释器位置

word="Hello Shell"
echo "Hello Shell!"

数学计算(/ bin中/计算值)

#!/bin/bash
# calc --add 3 4 执行结果为7

#第一个参数为--add时,做加法
if [[ $1 = "--add" ]];then
echo --add
echo $(($2+$3))

#第一个参数为--sub时,做减法
elif [[ $1 = "--sub" ]];then
echo --sub
echo $(($2-$3))

#第一个参数为--mul时,做乘法
elif [[ $1 = "--mul" ]];then
echo --mul
echo $(($2*$3))

#第一个参数为--div时,做除法
elif [[ $1 = "--div" ]];then
echo --div
echo $(($2/$3))

#第一个参数为--div时,做求余
elif [[ $1 = "--mod" ]];then
echo --mod
echo $(($2%$3))

#第一个参数为其它时,提示错误
else
echo $1
echo fuck off,不支持的操作符
fi

显示文件信息(/ bin中/ FileInfo的)

#!/bin/bash
#fileinfo ~/hello 显示该文件的权限和内容

fileinfo(){


    # 如果文件不存在,报错退出
    if [[ ! -e $1 ]];then
        echo "$1 doesn't exist!"
        return 0
    fi

    echo $1:

    #判断和输出文件的读写执行权限
    if [[ -r $1 ]];then
        echo -n "readable,"
    else
        echo -n "NOT-readble,"
    fi

    if [[ -w $1 ]];then
        echo -n "writable,"
    else
        echo -n "NOT-writable,"
    fi

    if [[ -x $1 ]];then
        echo "executable"
    else
        echo "NOT-executable"
    fi

    #通过Linux的标准命令,输出文件内容
    echo -e "\ncontents":
    echo ====================
    cat $1
    echo ====================

}

# 调用函数,传入文件位置参数
fileinfo $1

自定义的文件拷贝(/ bin中/ MCP)

#!/bin/bash
#用户通过mcp srcfile dstfile实现拷贝
#通过mcp -a srcfile dstfile实现追加
#拷贝完成后询问用户是否立即查看

docp(){

#判断是新建还是追加
append=0
if [[ $1 = "-a" ]];then
    append=1
    srcfile=$2
    dstfile=$3
else
    append=0
    srcfile=$1
    dstfile=$2
fi
echo "srcfile:$srcfile,dstfile:$dstfile"

#判断源文件是否存在
if [[ ! -e $srcfile ]];then
    echo "stupid! souce file does not exist!"
    return 0
fi

#如果目标文件不存在则创建
if [[ ! -e $dstfile ]];then
    touch $dstfile
fi

#写入文件
if [[ $append -eq 1 ]];then
    cat < $srcfile >> $dstfile
else
    cat < $srcfile > $dstfile
fi

#询问用户是否要查看目标文件
echo -n "$srcfile written to $dstfile successfully! read it now?[y/n]:"
read temp
if [[ $temp = 'y' ]];then
    echo "content:"
    echo ====================
    cat < $dstfile
    echo ====================
fi

}

#调用函数,传入参数
docp $1 $2 $3

猜数字小游戏(/ bin中/ guessnum)

#!/bin/bash

#生成随机数,此处的rand命令需要安装一下
answer=`rand --max 1000`
#answer=$(cat /dev/urandom | head -n 10 | cksum | awk -F ' ' '{print $1}')
#answer=$(($answer%1000))
echo $answer

while true
do
    #提示用户输入
    echo -n "please enter a num between 0~1000:"
    read guess

    #看答案
    if [[ $guess = "drop it" ]];then
        echo "the answer is:$answer"
        break
    fi

    #对比
    if [[ $guess -eq $answer ]];then
        echo "bingo!the answer is:$answer"
        break
    elif [[ $guess -gt $answer ]];then
        echo "too big!"
    else    
        echo "too small!"       
    fi
done

echo "GAME OVER!"
  •  
版权声明:本文为博主原创文章,未经博主允许不得转载。https://my.csdn.net/pangzhaowen
发布了117 篇原创文章 · 获赞 41 · 访问量 6万+

说明

sudo cp hello calc mcp fileinfo guessnum /bin/

HelloShell(/ bin中/你好)

#!/bin/bash
#↑声明shell解释器位置

word="Hello Shell"
echo "Hello Shell!"

数学计算(/ bin中/计算值)

#!/bin/bash
# calc --add 3 4 执行结果为7

#第一个参数为--add时,做加法
if [[ $1 = "--add" ]];then
echo --add
echo $(($2+$3))

#第一个参数为--sub时,做减法
elif [[ $1 = "--sub" ]];then
echo --sub
echo $(($2-$3))

#第一个参数为--mul时,做乘法
elif [[ $1 = "--mul" ]];then
echo --mul
echo $(($2*$3))

#第一个参数为--div时,做除法
elif [[ $1 = "--div" ]];then
echo --div
echo $(($2/$3))

#第一个参数为--div时,做求余
elif [[ $1 = "--mod" ]];then
echo --mod
echo $(($2%$3))

#第一个参数为其它时,提示错误
else
echo $1
echo fuck off,不支持的操作符
fi

显示文件信息(/ bin中/ FileInfo的)

#!/bin/bash
#fileinfo ~/hello 显示该文件的权限和内容

fileinfo(){


    # 如果文件不存在,报错退出
    if [[ ! -e $1 ]];then
        echo "$1 doesn't exist!"
        return 0
    fi

    echo $1:

    #判断和输出文件的读写执行权限
    if [[ -r $1 ]];then
        echo -n "readable,"
    else
        echo -n "NOT-readble,"
    fi

    if [[ -w $1 ]];then
        echo -n "writable,"
    else
        echo -n "NOT-writable,"
    fi

    if [[ -x $1 ]];then
        echo "executable"
    else
        echo "NOT-executable"
    fi

    #通过Linux的标准命令,输出文件内容
    echo -e "\ncontents":
    echo ====================
    cat $1
    echo ====================

}

# 调用函数,传入文件位置参数
fileinfo $1

自定义的文件拷贝(/ bin中/ MCP)

#!/bin/bash
#用户通过mcp srcfile dstfile实现拷贝
#通过mcp -a srcfile dstfile实现追加
#拷贝完成后询问用户是否立即查看

docp(){

#判断是新建还是追加
append=0
if [[ $1 = "-a" ]];then
    append=1
    srcfile=$2
    dstfile=$3
else
    append=0
    srcfile=$1
    dstfile=$2
fi
echo "srcfile:$srcfile,dstfile:$dstfile"

#判断源文件是否存在
if [[ ! -e $srcfile ]];then
    echo "stupid! souce file does not exist!"
    return 0
fi

#如果目标文件不存在则创建
if [[ ! -e $dstfile ]];then
    touch $dstfile
fi

#写入文件
if [[ $append -eq 1 ]];then
    cat < $srcfile >> $dstfile
else
    cat < $srcfile > $dstfile
fi

#询问用户是否要查看目标文件
echo -n "$srcfile written to $dstfile successfully! read it now?[y/n]:"
read temp
if [[ $temp = 'y' ]];then
    echo "content:"
    echo ====================
    cat < $dstfile
    echo ====================
fi

}

#调用函数,传入参数
docp $1 $2 $3

猜数字小游戏(/ bin中/ guessnum)

#!/bin/bash

#生成随机数,此处的rand命令需要安装一下
answer=`rand --max 1000`
#answer=$(cat /dev/urandom | head -n 10 | cksum | awk -F ' ' '{print $1}')
#answer=$(($answer%1000))
echo $answer

while true
do
    #提示用户输入
    echo -n "please enter a num between 0~1000:"
    read guess

    #看答案
    if [[ $guess = "drop it" ]];then
        echo "the answer is:$answer"
        break
    fi

    #对比
    if [[ $guess -eq $answer ]];then
        echo "bingo!the answer is:$answer"
        break
    elif [[ $guess -gt $answer ]];then
        echo "too big!"
    else    
        echo "too small!"       
    fi
done

echo "GAME OVER!"
  •  

猜你喜欢

转载自blog.csdn.net/pangzhaowen/article/details/80910481
今日推荐