shell脚本编程基础和实例

shell脚本是什么

Shell脚本是利用shell功能所写的程序,是纯文本文件,将shell的语法和指令搭配正则表达时候、管道命令、数据流重定向等功能,实现想要的处理。

shell脚本的基础语法

  1. shell脚本第一行#!bin/bash,告诉系统该脚本是bash语法,使用/bin/bash程序执行;
  2. 除去第一行以外,#开头的行是注释,程序不会执行;
  3. shell脚本的执行方式:sh myshell.sh./myshell.shsource myshell.sh(. myshell.sh),前两者会创建一个子bash程序来执行shell脚本,执行完后又回到原bash,因此子bash和原bash的变量不共享。后者直接在原bash执行,共享变量;
    在这里插入图片描述在这里插入图片描述
  4. 可以通过read和echo命令与用户交互,用户可以从终端输入数据;
  5. 用declare声明变量,声明时可以直接初始化;
  6. ${var}可以获取变量的值,$(command)可以让程序先执行command命令,如nowdate=$(date +%Y%m%d)
  7. 命令支持数值运算,如value=${var1}+${var2};
  8. 条件判断有几种语法:test命令、判断符号[]、if...then...elif...then...else...then...case...in...esac
  9. 循环有几种语法:while […] do … done, until […] do … done, for … in … do … done
  10. 支持定义函数: function funname(){}
  11. 特殊变量:
    • $0,$1,$2…分别表示执行命令和各个入参,如./mushell.sh para1 para2,$0=./mushell.sh, $1=para1 $2=para2
    • $#: 入参个数,如上述示例 $#=2
    • $@: 入参拼接,用空格隔开,如上述示例 $@=para1 para2
    • $*: 入参拼接,可以指定分隔符,默认是空格,即默认等于 $@
  12. shell支持debug调试:sh -x myshell.sh

示例

实现一个根据输入生日日期计算年龄的程序:

#!/bin/bash
read -p "input your birthday:" birthday
if [ "$(echo ${birthday} | grep '[0-9]\{8\}')" == "" ]; then
    echo "input birthday error! birthday format : YYYYMMDD"
    exit 1
fi
declare -i now_time=$(date +%s)
declare -i birth_time=$(date --date="${birthday}" +%s)
declare -i diff_time=$((${now_time}-${birth_time}))
test ${diff_time} -lt 0 && echo "input birthday error! later then today!" && exit 1
declare -i diff_day=$((${diff_time}/60/60/24))
declare -i diff_year=$((${diff_day}/365))
echo -e "your age is ${diff_day} days!"
echo -e "${diff_year} years $((${diff_day}-${diff_year}*365)) days"

输入8位生日日期,计算年龄:
在这里插入图片描述
(后续有新增内容再补充)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值