a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 170|回复: 1

[红帽认证] 红帽认证辅导:在Linux中对Bash变量内容修改的方法

[复制链接]
发表于 2012-8-4 12:19:50 | 显示全部楼层 |阅读模式
我们知道两种对变量取胜的体例:     echo $HOME echo ${HOME}: ]5 _7 a6 r: F& o2 W
    在echo ${variable}的体例中,还可以对变量的内容进行改削,只要加上一些字符标识表记标帜,后面再接着使用比对字符串,就可以改削变量的内容了。假设变量名为:vbird ,而且内容为/home/vbird/testing/testing.x.sh1 I% g! D" x( t
    ◆1 、完整呈现vbird 这个变量:
2 [/ A# W5 a3 x6 b# T    vbird="/home/vbird/testing/testing.x.sh"5 @- Q% B0 Q) L1 V8 \
    echo ${vbird}
: c6 s5 J: u  G$ `2 q5 A1 Z    /home/vbird/testing/testing.x.sh" m* u/ O9 f/ M
    ◆2 、在vbird 变量中,年夜最前面起头比对9 Q2 b1 n+ L0 a: o+ H9 [/ @3 ~
    若开首为 /,则删除两个/ 之间的所稀有据,即 /*/% a6 ]2 T2 z: u+ e! R( n
    echo ${vbird##/*/}
9 k1 |, v5 H! _& M4 P    testing.x.sh——删除了/home/vbird/testing/! @1 C+ Y0 V) i+ W
    echo ${vbird#/*/}) @/ V1 S, L- X: |: W8 b/ Z5 K- n
    vbird/testing/testing.x.sh——只删除了/home/而已
* a- n5 \8 O4 n7 F9 u% |    ------在这两个例子中,变量名后面如不美观接了两个##,暗示在##后面的字符串取“最长的”那一段;如不美观只有一个#,暗示取“最小的”那一段。(自注:“最小的那一段“暗示年夜左到右离第一个字符比来而且和第一个字符不异的字符之间的内容,最长则反之)
8 Q( y$ R! E. d    ◆3 、承上题,如不美观是年夜后面起头,删除/*呢?
7 L/ B; L$ W5 ]    echo ${vbird%%/*/}3 a6 z6 w  y1 u- G6 p
    /home/vbird/testing/testing.x.sh——都没有删除' _( t( J7 P( K7 o  K; g
    echo ${vbird%%/*}
6 {4 Z. }/ q0 q$ S, z7 m& J    --------都被删除了
* _7 x7 q. G7 c# ]    echo ${vbird%/*}2 {  U4 f: b! G" C7 Y: {; t

) `: W) E" v7 |0 U6 A8 q  L    /home/vbird/testing ——只删除 /testing.x.sh部门
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:19:51 | 显示全部楼层

红帽认证辅导:在Linux中对Bash变量内容修改的方法

</p>    在这个例子中要出格注重,阿谁% 比对的是“最后面阿谁字符”的意思,所以第一个当然不合错误,因为vbird 这个变量的内容最后面是h 而不是/.至于%%/*则是删除“最长的阿谁/*”,当然就是全数,而%/* 则是最短的阿谁。(自注:最短最长同上注,虽然% 暗示反向的比对,但需注重的是在${variable} 中输入的时辰仍然按着年夜左到右的挨次,寄暌闺变量内容中的字符的挨次不异,中国自学编程网,www.zxbc.cn 。如下例:: ?' g1 q7 C2 _; i
    echo ${vbird%t*h}
# |$ S, O+ j, J& p+ q    /home/vbird/testing/tes ——t.ing.x.sh被删除了9 w  m) p$ f5 v- \* |% v
    如不美观是( A* r4 r: t+ j9 H9 I) k  e1 [
    echo ${vbird%h*t}
' D3 L" g, `( d% C    /home/vbird/testing/testing.x.sh——则输出没有转变(因为比对都是与第一个字符比,变量内容的第一个字符为h ,而呼吁中给出的第一个字符为t ,与真实的变量内容不符。)6 {% p& k8 x: G) Q* v
    ◆4.将vbird 变量中的testing 庖代为TEST
& b, D) f4 |& Z& _. i    echo ${vbird/testing/TEST}
+ x; I/ g% d  g$ v6 u    /home/vbird/TEST/testing.x.sh  _3 u# ]; y; @" Z
    echo ${vbird//testing/TEST}# Z, W/ n  ~% |  S8 i) E* X; g+ R
    /home/vbird/TEST/TEST.x.sh; G7 E9 j' y1 T1 L" Z5 _6 u
    如不美观变量后面接的是/ 时,暗示后面是进行" 庖代" 的工作,而且仅庖代“第一个”,如不美观是//,则暗示全数的字符串都庖代。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-29 11:10 , Processed in 0.185586 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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