码迷,mamicode.com
首页 > 系统相关 > 详细

shell字符串处理

时间:2016-04-13 21:03:46      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:shell字符串处理

把当前系统前10个系统用户名 和 uid号输出到屏幕上
head  /etc/passwd

字符串截取
1${变量名:起始位置:长度}

echo   ${变量名:起始位置:长度}
变量名=${变量名:起始位置:长度}

  806  echo $HOSTNAME
 
  808  ${HOSTNAME:0:3}
  809  echo ${HOSTNAME:0:3}
  810  echo $HOSTNAME
  811  echo ${HOSTNAME:0:5}
  812  domain=${HOSTNAME:0:5}
  813  echo $domain
  814  domain=${HOSTNAME:6}

2  使用 expr substr
[root@pc205 ~]# echo $HOSTNAME
pc205.tarena.com
[root@pc205 ~]#
[root@pc205 ~]# expr substr "$HOSTNAME" 1 5
pc205
[root@pc205 ~]# expr length "$HOSTNAME"
16
[root@pc205 ~]# expr length "panglijing"
10
[root@pc205 ~]#

3  使用cut工具
echo $var | cut -b 起始位置-结束位置
echo  $HOSTNAME  |  cut  -b   1-5
echo  $HOSTNAME  |  cut  -b   6-

head  -3  /etc/passwd  |  cut    -d  ":"  -f  1,3

4 路径分割
basename
dirname


[root@pc205 ~]# basename /etc/sysconfig/network-scripts/ifcfg-eth0
ifcfg-eth0
[root@pc205 ~]#
[root@pc205 ~]#
[root@pc205 ~]# basename /etc/passwd
passwd
[root@pc205 ~]# basename /etc/sysconfig/network-scripts
network-scripts
[root@pc205 ~]# basename /etc/sysconfig/network-scripts
network-scripts
[root@pc205 ~]#

[root@pc205 ~]# dirname /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts
[root@pc205 ~]#
[root@pc205 ~]# dirname /etc/sysconfig/network-scripts
/etc/sysconfig
[root@pc205 ~]#

+++++++++++++++++++++++++++++++++++++++++++++++++

字符串替换
    ${var/old/new}
    ${var//old/new}

name=panglijing
[root@B 桌面]# echo ${name/i/F}
panglFjing
[root@B 桌面]# echo ${name//i/F}
panglFjFng
[root@B 桌面]# echo $name
panglijing
[root@B 桌面]# newname=${name//i/F}
[root@B 桌面]# echo $newname
panglFjFng
[root@B 桌面]#

按条件掐头去尾
${var 替换符号 表达式}
echo ${var 替换符号 表达式}
变量名=${var 替换符号 表达式}

表达式的表示方法
通配符
普通字符
通配符+普通字符

字符串删除
从左向右,把变量中与表达式匹配的数据删除
#    最短匹配删除
##  最长匹配删除

从右向左,把变量中与表达式匹配的数据删除
%    最短匹配删除
%%  最长匹配删除

  825  echo ${MAIL##*/}
  826  mailbox=${MAIL##*/}
  827  mailuser=${MAIL##*/}
  828  echo $mailuser
  829  echo $MAIL
  830  echo ${MAIL % /root}
  831  echo ${MAIL%/root}
  832  echo $MAIL
  833  echo ${MAIL%/*}
----------------------------------------------------------------------
获取字符串的部分数据
----------------------------------------------------------------------
给变量赋初值
${变量名 符号 "值"}
echo  ${变量名 符号 "值"}
变量名=${变量名 符号 "值"}

--------------------------------------------------------------------
:=
${var:="word"}
若变量var已存在且非Null,则返回 $var 的值,
否则返回字串“word”,并赋值给变量 var

---------------------------------------------------------------------
:+
${var:+"word"}
若变量var已存在且非Null,则返回字串“word”,反之返回null值。
作用:判断一个是否定义。

----------------------------------------------------------------------
:-
${var:-"word"}
若变量var已存在且非Null,则返回 $var 的值
否则返回字串“word”,变量var值不变。
----------------------------------------------------------------------
:?
${var:?}
${var:?"word"}
若变量var已存在且非Null,则返回 $var 的值
,否则返回字串“word”,并结束脚本。
作用:输出因变量没有定义所导致的错误。

#!/bin/bash
read -p "please input numbers " x
#x=${x:-"1"}
#y=${x:="1"}
#y=${x:+"1"}
y=${x:?}
echo ‘$x is ‘ $x
echo $y
---------------------------------------------------------------------
[root@B shell]# cat check_veryone_ip.sh
#!/bin/bash
ip=${1:-"127.0.0.1"}
ping  -c  3  $ip  &> /dev/null
if [ $? -eq  0  ];then
   echo $ip  is online
else
   echo $ip is not online
fi
[root@B shell]#

 

本文出自 “linux云计算” 博客,请务必保留此出处http://liangzai818.blog.51cto.com/10003446/1763437

shell字符串处理

标签:shell字符串处理

原文地址:http://liangzai818.blog.51cto.com/10003446/1763437

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!