目录

  • 说明:
    • 案例
      • 1. 判断当前用户是否是root
      • 2. 向脚本传递参数,创建用户,并在 **/home**目录下创建对用账户的文件夹,文件夹名为账户名。密码不输入时默认为:123456
      • 3. 井号进度条:
      • 4. 横线旋转的进度条 ,其4个状态: **- \ | /**
      • 5. 石头剪刀布游戏
      • 6. 猜数字游戏
      • 7. 遍历指定路径下的文件夹,统计指定格式文件夹的数量

说明:

  1. vim 文件名.sh 创建文件
  2. sh 文件名.sh 运行shell脚本

案例

1. 判断当前用户是否是root

#!/bin/bashif [ ${USER} == 'root' ]
thenecho "this is root"
elseecho "you are not root"
fi
exit

2. 向脚本传递参数,创建用户,并在 /home目录下创建对用账户的文件夹,文件夹名为账户名。密码不输入时默认为:123456

#!/bin/bash
echo "create user start:"
read -p " please input username: " usernameif [ -z ${username} ]
then#username is emptyecho "username is empty ! please input username!"exit 1001
fistty  -echo #close show echo content
read -p " please input password: " password
stty echo #open show echo content#while passowrd is empty , password is 123456
if [ -z ${password} ]
thenpassword=123456
fiuseradd ${username}
echo ${password} | passwd --stdin ${username}mkdir /home/${username}
echo "${username} create success !"
exit

3. 井号进度条:

#!/bin/bash
progressBar(){i=0while :doif [ ${i} -ge  100 ]thenbreakfiecho -n "#"sleep 0.2i=` expr ${i} + 10`doneprintf "\n success!"
}progressBar &
killall $0
exit

4. 横线旋转的进度条 ,其4个状态: - \ | /

 #!/bin/bash
progressBar2(){i=0setTime=0.2status=0while :dostatus=`expr ${status} + 1 `case ${status} in1)echo  -e '-'"\b\c"sleep ${setTime};;2)echo  -e '\\'"\b\c"sleep ${setTime};;3)echo  -e '|'"\b\c"sleep ${setTime};;4)echo  -e '/'"\b\c"sleep ${setTime};;*)status=0esaci=`expr ${i} + 5`if [ ${i} -gt 100 ]thenbreakfidone}
progressBar2

5. 石头剪刀布游戏

#!/bin/bash
echo "the finger-guessing game"
echo "1. Rock"
echo "2. Paper"
echo "3. Scissors"
read -p "input your choose: " yourChooserandom=$[RANDOM%3 + 1]case ${yourChoose} in
1)echo "you choose: Rock"if [ ${random} -eq ${yourChoose}  ]thenecho "equals"echo "computer choose: Rock"elif [ ${random} -eq 2 ]thenecho "you lose"echo "computer choose: Paper"elif [ ${random} -eq 3 ]thenecho "you win"echo "computer choose: Scissors"fi;;
2)echo "you choose: Paper"if [ ${random} -eq ${yourChoose}  ]thenecho "equals"echo "computer choose: Paper"elif [ ${random} -eq 3 ]thenecho "you lose"echo "computer choose: Scissors"elif [ ${random} -eq 1 ]thenecho "you win"echo "computer choose: Rock"fi;;
3)echo "you choose: Scissors"if [ ${random} -eq ${yourChoose} ]thenecho "equals"echo "computer choose: Scissors"elif [ ${random} -eq  1 ]thenecho "you lose"echo "computer choose: Rock"elif [ ${random}  -eq 2 ]thenecho "you win"echo "computer choose: Paper"fi;;*)echo "input error";;
esac

6. 猜数字游戏

#!/bin/bash
echo " Guess the number  ":<<!random a num that it is from 1 to 100
!
randomNumber=$((RANDOM%100+1))
less=0
more=0
isfirst=0 #first=0
echo "created the number from 1 to 100 ! success "
while :
doread -p "input your number: " yourGuessNumberif [ ${yourGuessNumber} -eq ${randomNumber} ]thenecho "you win! the random Number is "${randomNumber}exitelif [[ ${yourGuessNumber} -le 0 || ${yourGuessNumber} -gt 100 ]]thenecho "please input number that it is from 1 to 100 !"elif [ ${yourGuessNumber} -gt ${randomNumber}  ]thenecho "!!! too more! guess: ${less} to ${yourGuessNumber} "more=${yourGuessNumber}isfirst=1elseif [ ${isfirst} -eq 0 ]thenecho "!!! too less! gues:${yourGuessNumber} to 100"more=100elseecho "!!! too less! gues:${yourGuessNumber} to ${more}"fiisfirst=1less=${yourGuessNumber}fi
done

7. 遍历指定路径下的文件夹,统计指定格式文件夹的数量

统计 /home/ 下的所有格式为指定日期的文件夹 数量,并将结果写入countResult.txt文件中

#/bin/bash
read -p '请输入开始时间的年月日,格式为【yyyy-MM-dd】:' ymd
if [ -z ${ymd} ]
thenecho '未输入开始时间,退出程序'exit 1001
firead -p '请输入'${ymd}'往前指定的天数:' beforDayNum
if [ -z ${beforDayNum} ]
thenecho '未输入'${ymd}'往前指定的天数,退出程序'exit 1001
fi# 存放所有需要查询的日期
imputDate=$(date -d  "${ymd}" +%Y-%m-%d)
dayArr=()
beforDayNum_copy=${beforDayNum}
while :
doif [  ${beforDayNum_copy} -le -1 ]thenbreakfiyestertday=$(date -d "${imputDate} ${beforDayNum_copy} days ago" "+%Y-%m-%d")# echo ${yestertday} # 2022-09-09dayArr[${beforDayNum_copy}]=${yestertday}beforDayNum_copy=`expr ${beforDayNum_copy} - 1 `
doneecho "需要统计的日期如下:"
for(( i=0;i<${#dayArr[@]};i++)) do#${#array[@]}获取数组长度用于循环echo ${dayArr[i]};
done;read -p "请确认【y:日期正确,n:日期有误】:" sure
if [  ${sure} == 'y' ]
thentouch /home/countResult.txtcarNum=0carNos=$(ls /home/)for(( i=0;i<${#dayArr[@]};i++)) dofor carNo in ${carNos}dopathSerch="/home/"${carNo}"/"${dayArr[i]:0:4}"/"${dayArr[i]:5:2}"/"${dayArr[i]:8:2}if [ -d ${pathSerch} ]thencarNum=`expr ${carNum} + 1`fidoneecho ${dayArr[i]}"存在文件夹总数为:"${carNum} >> /home/counResult.txtcarNum=0done;cat /home/countResult.txt
elseecho "确认日期有误,退出程序"exit 1001
fi

shell 编程 小案例相关推荐

  1. python程序实例教程基础-编程小案例

    编程小案例 本小节实现一个通讯录管理程序,通过这个案例来融会贯通之前所学习的知识,该程序使用到如下知识点: 条件选择 循环 列表 字典 键盘输入 屏幕输出 编写程序 addr-manage.py 实现 ...

  2. shell讲解-小案例

    shell讲解-小案例 一.文件拷贝输出检查 下面测试文件拷贝是否正常,如果cp命令并没有拷贝文件myfile到myfile.bak,则打印错误信息.注意错误信息中basename $0打印脚本名.如 ...

  3. python实战编程小案例-----更新中

    入门小案例 数字的阶乘 圆的面积 打出区间里面的素数 求前N个数字的平方和 计算列表数字的和 列表去重 简单对列表排列:sort,sorted: 怎样实现学生成绩的排序 拉姆达 lambda 读取文件 ...

  4. shell编程经典案例,建议收藏

    1.编写hello world脚本 #!/bin/bash# 编写hello world脚本echo "Hello World!" 2.通过位置变量创建 Linux 系统账户及密码 ...

  5. python编程小案例_用Python3编程写第一个小案例!-Go语言中文社区

    用Python3编程第一步! 今天博主跟大家聊一聊如何使用Python3编程第一步!!不喜勿喷,如有建议欢迎补充.讨论! Come on! 在前面的几篇文章中我们已经学习了一些Python3 的基本语 ...

  6. Python函数式编程小案例:文本加密

    问题描述:编写函数,接收一个文本和一个密钥字符串,实现文本加密和解密,要求使用异或算法,如果文本比密钥字符串长的话就循环使用指定密钥. 参考代码: 运行结果: ----------相关阅读------ ...

  7. JavaScript中for循环嵌套编程小案例

    编写一个函数用于实现金额组合:面额分别有1元.2元.5元的纸币共计N张,现需要付出M元,统计共有几种付法.N.M是用户输入的值.(有10张纸币,面额分别是1元.2元.5元,现需要付出18元,通过编程统 ...

  8. linux shell编程小程序6,shell脚本应用小程序

    1...100的求和 非递归: #!/bin/bash read num count=1 sum=0 val="" ret="" while [ $count  ...

  9. Java基础编程小案例-买飞机票

    买飞机票 需求: 机票价格按照淡季旺季.头等舱和经济舱收费.输入机票原价.月份和头等舱或经济舱. 机票最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月) ...

最新文章

  1. 《智源社区周刊:预训练模型》第1期:吴恩达团队医疗影像预训练、快手落地万亿参数模型...
  2. 开源吞噬世界,得开发者得天下
  3. Eclipse 教程
  4. discuz uc密码修改
  5. ios 中的基本算数函数
  6. offset linux,Linux 宏定义之 offsetof 与 container_of(十九)
  7. CSS实现垂直居中的常用方法
  8. pyspark.zip/pyspark/worker.py:53: UnicodeWarning: Unicode equal comparison failed to convert both ar
  9. 第三节:总结.Net下后端的几种请求方式(WebClient、WebRequest、HttpClient)
  10. 【Java】统计字符串中每个字符出现的次数
  11. 数字图像处理--彩色图像转灰度图像
  12. java 实例 登录用户 equals的用法
  13. 必备的中国风PNG免扣元素点缀,尽显国潮韵味
  14. 【JavaScript高级程序设计】--第1章 JavaScript简介
  15. python基础教程是什么-Python基础教程(一)
  16. 深入了解C++的广泛应用
  17. Zabbix篇四:钉钉机器人报警
  18. XenApp and XenDesktop 7.15 LTSR CU6发布
  19. 什么是扇入?什么是扇出?
  20. 数据分析-思维分析逻辑day05

热门文章

  1. CISCO-路由器交换机密码恢复
  2. 《成语接龙》隐私说明
  3. 四肽DArg-GDW,144161-76-2
  4. opencv微信二维码引擎的使用(for java)
  5. 公司地址变更,税务变更,公司搬家了怎么变更企业信息
  6. konfig:采用ConfigMap实现线上配置热更新
  7. 使用FFMpeg合并bilibili缓存的视频文件
  8. 你应该看得懂的RecyclerView嵌套
  9. pandas matplotlib 用于数据分析和可视化
  10. 调侃c语言的图片,c语言能显示图片吗