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

今天开始学习shell编程!!!

[复制链接]
发表于 2018-8-24 06:13:25 | 显示全部楼层 |阅读模式
  已经入职一个月了。
  经过这一个月重复的工作每天都是做一些环境配置的事。
  对环境配置已经很熟练了。也不需要再通过每一步的安装来学习新的知识了。
  所以我想写一个shell脚本让程序自己安装。
  昨天晚上都凌晨12点了又突发灵感非要写,然后从温暖的被窝里爬出来打开电脑写了我平生第一个shell脚本。
  如我所料,很失败。因为对shell的语法一点都不了解。就那么一堆命令往程序里面一堆。
  今天决定该学习SHELL啦!!!
  编程出身的我果然对编程很有感觉。因为大学编了3年程现在学习shell我知道哪些是以后编程会用到的。注重学习哪些内容。一下子看了7个shell基础视频,边看边敲,觉得时间过的真快呀!
  今天学习了一下简单的语法。如下:
  1.fork炸弹
  #env | grep LANG
  #vi fork.sh
  #chmod +x fork.sh
  #./fork.sh
  2.bash的启动顺序
  init--getty--login--bash
  3.bash初始化文件
  #pstree
  #top
  #vi /etc/profile
  #rpm -qa | grep vim
  #yum install vim*
  #alias vi=vim
  #vi ~/.bash_profile    //单个用户自己的环境
  alias vi=vim     长久保持
  #vi /etc/profile          //全局环境
  alias vi=vim     长久保持
  4.
  #bash --version
  #type pwd
  #type test
  #ls;pwd;date
  #exit
  #(ls;pwd;date)>outputfile.txt
  #cat outputfile.txt
  #unalias vi //取消
  #\vi  //暂时不使用
  5.
  #vi test.sh
  #!/bin/bash     //必须有,指出shell类型为bash
  while:
  do
  echo"welcome boobooke"
  sleep 5  //5s执行一次的死循环
  done
  6.
  #vi test1.sh
  #!/bin/bash
  #Cleanup
  cd /var/log
  cat /dev/null > messages
  cat /dev/null > wtmp
  echo "Logs cleaned up."
  #chmod +x test1.sh
  #./test1.sh         //新的shell执行
  #. test1.sh         //当前shell执行
  #source test1.sh  //当前shell执行
  #eval '. test1.sh' //当前shell执行
  #/bin/bash test1.sh
  7.
  #vi test2.sh
  #!/bin/bash
  who_name="wilson"
  echo "${who_name}hello,shell word"
  8.
  #vi test3.sh
  #!/bin/bash
  function say_hello()
  {
  echo "Enter Your name:"
  read name
  echo "Hello $name"
  }
  echo "programme starts here....."
  say_hello
  echo "programme ends"
  9.命令替换
  #ls 'cat file' -al
  10.变量与常用符号
  #echo $PATH //环境变量
  #name=boobooke //本地变量只在该shell有用
  #echo $name
  #bash //启动一个子shell不能用了
  #echo $name
  #name=admin
  #echo $name
  #exit
  #echo $name
  #echo $PATH
  #bash
  #echo $PATH
  11.
  区分大小写
  =两边不可以有空格
  空格用“”
  #name="welcome boobooke"
  #echo $name
  #echo "admin say $name"
  #echo "admin say ${name}root"
  12.
  #set //局部变量
  #unset name
  #set
  #echo ${name}${name}
  13.设置只读变量不可清除更改
  #free=book
  #echo $free
  #readonly free
  #free=www
  不行
  14.
  #env //环境变量
  #echo $HOME
  #bash
  #echo $HOME
  #exit
  #NAME=book
  #export NAME
  #env | grep N
  #unset NAME
  15.
  #echo $PATH
  #PATH=${PATH}:/opt/bin
  #echo $PATH
  16.
  变量长度
  ${#var} 字符串长度($var的字符数量)
  对于一个数组,${#array}是数组中第一个元素的长度
  #name=boobooke
  #name="www boobooke com"
  #echo $name
  #echo ${#name}
  //包括空格
  #arr1=(a bb ccc dddd)
  #echo ${#arr1}        //arr1数组第一个元素的长度
  #echo ${#arr1
  • }     //arr1数组有几个元素
      #echo ${arr1
  • }       //输出数组所有元素
      #echo ${arr1[2]}      //输出数组第3个元素
      17.
      变量扩展
      ${var:pos} 变量var从位置pos开始取字符
      ${var:pos:len}从位置pos开始,取len个字符
      ${var/Pattern/Replacement}
      使用Replacement来替换var中的第一个Pattern的匹配
      ${var//Pattern/Replacement}
      全局替换,在var中所有的匹配都用Replacement来替换
      18.
      指定类型的变量
      declare
      typeset
      -r 只读
      #declare -r var1 =#readonly var1
      -i整形
      #declare -i nu
      #nu=1234
      #echo $nu
      #nu=3.12 不行
      #mou=3.12可以
      -a 数组
      -f 函数
      -x export
      19.变量的间接引用
      #admin=wilson
      #wilson=book
      #echo $admin
      #eval admin=\$$admin
      #echo &admin
      20.产生随机整数
      $RANDOM
      #!/bin/bash
      count=1
      MAX=10
      while ["$count" -lt "$MAX"]   //-lt是小于
      do
      num=$RANDOM
      echo $num
      let "count+=1"
      done
      echo"-----------"
      21.位置变量参数 最多9个
      #vi var1.sh
      #!/bin/bash
      echo"这个脚本的名字是$0"
      echo"第1个参数是$1"
      echo"第2个参数是$2"
      echo"第3个参数是$3"
      echo"第4个参数是$4"
      echo"第5个参数是$5"
      #chmod +x var1.sh
      #./var1.sh a b c d e f
      22.
      #vi var2.sh
      #!/bin/bash
      echo "Hello,$1 welcome boobooke!"
      #./var2.sh welson
      输出:Hello,welson welcome boobooke!
      23.向系统命令传递一个参数
      #!/bin/bash
      grep $1 /etc/passwd | awk -F:'{print $3"\t"$6}'
      //输入用户,查出他的UID和家目录
      #vi grep.sh
      #!/bin/bash
      grep $1 /etc/passwd
      #chmod +x grep.sh
      #./grep.sh root


  • 运维网声明 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.iyunv.com/thread-555641-1-1.html 上篇帖子: shell脚本案例分析 下篇帖子: shell脚本命令学习(一)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

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

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

    扫描微信二维码查看详情

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


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


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


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



    合作伙伴: 青云cloud

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