娇w兴 发表于 2018-8-19 09:37:17

shell脚本编写3

  字符串的处理:   ${:截取/替换#掐头    % 去尾}
  字符串的截取的三种处理方法:
  方法一:(注:从左开始第一位是以0开始)
  ${}
  格式${取用的变量名:起始位数:长度}
  例: x=1234567890
  echo ${x:1:3}(输出是234)
  ${x::6}默认不写是从第一位开始截取
  方法二:(注:从左开始第一位是以1开始)
  expr substr “$取用的变量名” 起始位置的值 长度
  例: expr subdtr “$x” 1 3 (输出为123)
  方法三:(注:从左开始第一位是以1开始)
  echo $取用的变量的名 |cut -b 起始位置-结束位置
  echo $取用的变量的名 |cut -b 3,4,5,7,9
  例: echo $x | cut -b3,5 (输出为35)
  echo $x | cut -b1-3 (输出为123)
  字符串的替换:/
  :%s/旧的内容/新的内容/g (vim中%操作对每一行都执行,g对行的                                                       每一个都执行)
  echo ${x/3/}    (只更换x中的第一个3)显示出的数值时3换为但是x的值不变
  echo ${x//3/}    (更换x中的所有3)显示出的数值时3换为但是x的值不变
  echo ${x//*}(支持[ ] 更换连续的)
  字符串的掐头去尾:%去尾(从右往左删)...   #掐头(从左往又删)##(一个#删除最短                                                   2个#删除所有)
  ${取用的变量的名%#关键词}
  例:# x=head -1 /etc/passwd
  # echo $x
  root:x:0:0:root:/root:/bin/bash
  root:x:0:0:root:/root:/bin/bash
  # echo ${x#root:}
  x:0:0:root:/root:/bin/bash
  # echo ${x#:}
  x:0:0:root:/root:/bin/bash
  # echo ${x##:}
  /bin/bash
  touch {a,b,c,d,e,f}.txt
  #!/bin/bash
  for i in ls *.txt
  do
  mv $i ${i%.txt}.doc
  done
  计算1-100所有偶数的和
  #!/bin/bash
  num=0
  for i in {1..100}
  do
  a=$
  if [ $a -eq 0 ];then
  let num=$num+$i
  fi
  done
  echo $num
  ~
  字符串赋初值: (   :-    )
  echo ${XX:-123}
  例:
  #!/bin/bash
  read -p "请输入用户名:" name
  if [ -z $name ]; then
  echo "必须输入用户名"
  exit
  fi
  read -p "请输入密码:" pass
  pass=${pass:-123}
  useradd "$name"
  echo "$pass" | passwd --stdin "$name"
  提示用户输入一个数:计算1到改数字的和,如果不输入则输出1-100的值
  #!/bin/bash
  read -p "请输入一个数字:" num
  a=${num:-100}
  b=0
  for i in seq $a
  do
  let b=$b+$i
  done
  echo $b
  数组:(一个变量,存放多个值)(从左往右以第0位开始)
  a=(11 22 33 aa bb cc)定义并赋值
  等同于
  a=11
  a=22
  a=33
  a=aa
  a=bb
  a=cc
  echo ${a}    输出为11   (取的是第一个值)
  echo ${a
[*]}    输出为所有的a的值

页: [1]
查看完整版本: shell脚本编写3