红联Linux门户
Linux帮助

shell脚本参数扩展问题

发布时间:2011-08-25 21:08:06来源:红联作者:懒惰的人
属于大括号{}的一个用法,我先把{}的用法贴出来.
{} 大括号:
用法一:通配符扩展 eg: ls my_{finger,toe}s 这条命令相当于如下命令的组合: ls my_fingers my_toes eg: mkdir {userA,userB,userC}-{home,bin,data} 我们将得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data,userC-home, userC-bin, userC-data,这几个目录

用法二:可用于语句块的构造,语句之间用回车隔开。如果你想在某些使用单个语句的地方(比如在AND或OR列表中)使用多条语句,你可以把它们括在花括号{}中来构造一个语句块。eg: { grep -v "$cdcatnum" $strack_file > $temp_file cat $temp_file > $strack_file echo cat -n file1 } (注:以上大括号中的四句命令够成了一个语句块)

用法三:参数扩展
${name:-default} 使用一个默认值(一般是空值)来代替那些空的或者没有赋值的变量name;
${name:=default}使用指定值来代替空的或者没有赋值的变量name;
${name:?message}如果变量为空或者未赋值,那么就会显示出错误信息并中止脚本的执行同时返回退出码1。
${#name} 给出name的长度
${name%word} 从name的尾部开始删除与word匹配的最小部分,然后返回剩余部分
${name%%word} 从name的尾部开始删除与word匹配的最长部分,然后返回剩余部分
${name#word} 从name的头部开始删除与word匹配的最小部分,然后返回剩余部分
${name##word} 从name的头部开始删除与word匹配的最长部分,然后返回剩余部分(注,name为变量名,word为要匹配的字符串) 用法三在处理字符串和未知变量时,是很有用的。

现在问题是不明白用法三...如果是固定用法,请高手给出参数扩展的全部用法句式(我只找到了这7个),尽快解决为谢.!!
文章评论

共有 7 条评论

  1. xuaibing 于 2011-10-24 18:26:32发表:

    大侠们,怎么在redhat下运行mc呢?

  2. jason_liu 于 2011-10-24 17:51:39发表:

    {:3_107:}

  3. huangyandong 于 2011-10-20 21:06:01发表:

    参考我的博客

  4. lei432378yu 于 2011-09-01 03:28:57发表:

    :0wpoi2

  5. yanyongkg 于 2011-08-26 14:17:15发表:

    ${name-word}
    ${name:-word}
    ${name+word}
    ${name:+word}
    ${name=word}
    ${name:=word}
    ${name?word}
    ${name:?word}
    ${!name*}
    ${!name@}
    ${name/word/word2} 替换最小匹配
    ${name//word/word2} 替换最大匹配


    更多用法请参考man bash
    在man bash中搜索Parameter Expansion

  6. glsow 于 2011-08-26 08:56:28发表:

    路过

  7. 懒惰的人 于 2011-08-25 21:10:23发表:

    爱好linux爱好shell的前辈可以加群50054998交流,环境比较好!!! 进来请遵守群规...菜鸟爱学的好友也热烈欢迎加入..