设为首页 收藏本站
查看: 951|回复: 0

linux shell脚本编写

[复制链接]

尚未签到

发表于 2018-8-23 13:49:35 | 显示全部楼层 |阅读模式
  大家好
  这是一篇自己阅读、学习的shell编程,工作中大量应用,尤为awk、sed、grep为主。希望对大家速成有用
  可以直接翻看到中部位置
  【data】
  export PATH=/mall/jdk/jdk1.7/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  export LANG=zh_CN.GB18030
  start=`date +%s -d "2011-11-28 15:55:37"`
  end=`date +%s -d "2011-11-28 15:55:52"`
  echo $(($end-$start))
  date "+%Y-%m-%d %H:%M:%S"
  date -d '+1 day' +"%d"   本日+1
  date -s 20100405
  date -s 14:31:00
  1、上个月末
  date -d `date +%y%m01`"-1 day" +%d
  2、往前倒
  date -d -`date +%d`day +%d
  3、条件
  if [`date +%d -d tomorrow` == 01 ];
  4、上个月
  date -d last-month
  date -d -1month
  date -d '-1 month' +"%m"
  5、下个月
  date -d next-month
  date -d 1month
  6、本月初
  date -d 1`date +%B`
  上个月初
  date -d 1`date -d last-month +%B`
  指定月份
  day -d 1May
  echo `date +%d` | xargs -I{} date -d '-{} day' +%Y%m%d       Linux如何得到上月月末日期
  sed -i "3s/.*/$table/g" conf/run.sql
  table=t_sms_mt_log_`date +"%m"`    本月,然后月初1号还是统计上月
  date -d '-1 day' +"%m"             本月,实实在在的本月
  subject="每日验证码下发数量统计_`date -d '-1 day' +"%m%d"`"
  select * from t_sys_user where user_code='duanzz';
  update  t_sys_user set terminal_id='13730000000' where user_code='duanzz';
  set fileformat=unix
  字符串的截取-替换
  echo ${stringa:1}    从第二位一直往后所有
  echo ${stringa:2:5}  从第三位往后一共截取5位
  echo ${stringZ:(-4)}  从右到左开始截取
  echo ${stringZ: -4}   从右到左开始截取,和上面效果一样
  a=${stringa%%f}       去掉变量stringa后缀f。
  echo ${stringZ/abc/xyz}  变量中字符串   abc被xyz替换
  echo ${stringZ/#abc/XYZ} 用'XYZ'替换开头的'abc'.
  echo ${stringZ/%abc/XYZ} 用'XYZ'替换结尾的'abc'.
  you_id=${USER}-on-${HOSTNAME}
  you_id=$USER\-on-$HOSTNAME
  echo $you_id  root-on-db1  效果一样。变量与字符串混合输出
  val=${1##+(0)} # 使用局部变量, 匹配最长连续的一个或多个0.
  引用:${backup_DIR}/$DATE
  #备份的变量:
  backup_dir=/home/mysql/mysql_bak
  date=`date -d "+%Y%m%d %H:%M:%d"`
  yes_time=`date -d yesterday  "+%Y%m%d"`
  mkdir -p /opt/chen$date\nailong    chen20160608nailong
  date -d "2 day ago" +"%Y-%m-%d"    昨天日期
  date -d "1 week ago" +"%Y-%m-%d"   上周日期
  date +%Y%m%d%h%M
  单引号(' ')操作与双引号基本一样, 但是不允许引用变量, 因为$的特殊意义被关闭了. 在单引号中,
  任何特殊字符都按照字面的意思进行解释, 除了'. 所以说单引号("全引用")是一种比双引号("部分引
  用")更严格的引用方法.
  '' 单引号屏蔽所有特殊字符
  "" 双引号屏蔽部分特殊字符
  【eval】
  两次扫描
  test.txt内容:hello shell world!
  myfile="cat test.txt"
  (1)echo $myfile  #result:cat test.txt
  (2)eval echo $myfile  #result:hello shell world!
  【echo】
  echo -e 处理特殊字符,解释特殊字符。生效特殊字符
  echo -n 不换行输出
  echo -e "a\ndddd" //自动换行
  echo $(ls -al)不换行             echo "$(ls -al)" 换行
  bash$ echo hello\!
  hello!
  bash$ echo "hello\!"
  hello\!
  bash$ echo -e x\ty
  xty
  bash$ echo -e "x\ty"
  x y
  echo "chen" >> file :把chen内容追加到file文件中来,不覆盖
  echo "chen" > file :覆盖了!!!
  [A-Za-z0-9]
  ########################  (( ... ))结构可以用来计算并测试算术表达式的结果.
  #!/bin/bash
  ((5 > 4))
  echo $?
  echo "Exit status of \"((5 > 4))\" is $?."
  【从键盘输入-不止是read】
  command /dev/null 2>&1
  status=$?
  echo $?   #如果cp这个命令成功的话,输出0,不成功的话,输出1
  :冒号在此是占位符,{str:=expr} 如果变量str不为空,${str:=expr}就等于str的值,若str为空,就把expr的值赋值给str
  : >> target_file  如果这个文件之前并不存在, 那么就创建它
  if [ $name="" ] 如果这个变量为空值
  then : # 什么都不做,引出分支.
  if [ ! -s 22.txt ] 如果22.txt这个文件为空
  或者是 if [ -z 22.txt ]
  [ $I -eq 1 ] && MIN=$MYRAND
  if [ -s $name ] 如果这个变量为空
  if [ -d $path ] 如果目录存在
  if [ -s $path ] 如果目录存在
  if [ -n "$1" ]  # 测试是否有命令行参数(非空).
  -a 文件存在     YES !
  -f 这是一个一般文件
  -d 这是一个目录
  -b 这是一个快设备(软盘,硬盘,光驱等)
  -c 这是一个字符设备(键盘,声卡等)
  -p 这个文件是一个管道
  -h 或者 -L 这是一个符号链接
  -r 文件是否可读
  -w 文件是否可写
  -x 文件是否可执行
  -O 你是否为文件拥有者
  -G 文件group-id是否与你相同
  f1 -nt f2 文件f1比文件f2新
  f1 -ot f2 文件f1比文件f2旧
  &&:and    |:或者  !:非     command||comand  ||:前者命令为真,后者才能执行,否则后者不执行
  comand&&comand 前者为真,后者执行,前者为假,后者略过
  sort:排序  wc:统计
  cd /opt && ./1.txt    :逐次执行的
  【查找内存使用情况】
  [root@db1 opt]# free -m|grep Mem|awk '{print "used\n----"};{print $3}'
  used
  ----
  985
  【数值比较】
  ------------在 [ ] 中使用
  -eq 数值相等。
  -ne 数值不相等。
  -gt 第一个数大于第二个数。
  -lt 第一个数小于第二个数。
  -le 第一个数小于等于第二个数。
  -ge 第一个数大于等于第二个数。
  ------------在 (( )) 中使用
     <   >=
  ----------字符串比较   =   ==
  小于, 按照ASCII字符进行排序
  if [[ "$a" < "$b" ]]
  if [ "$a" \< "$b" ]
  注意"

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-555613-1-1.html 上篇帖子: mysql备份单实例(一)shell-7928217 下篇帖子: Bash shell脚本练习(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表