yanfangsheng123 发表于 2018-8-24 06:13:25

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

  已经入职一个月了。
  经过这一个月重复的工作每天都是做一些环境配置的事。
  对环境配置已经很熟练了。也不需要再通过每一步的安装来学习新的知识了。
  所以我想写一个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}      //输出数组第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]
查看完整版本: 今天开始学习shell编程!!!