zoukankan      html  css  js  c++  java
  • Linux Shell编程(24)——命令替换

    命令替换 将会重新分配一个命令[1]甚至是多个命令的输出; 它会将命令的输出如实地添加到另一个上下文中. [2]


    使用命令替换的典型形式是使用后置引用(`...`). 后置引用形式的命令(就是被反引号括起来)将会产生命令行文本.
       1 script_name=`basename $0`
       2 echo "The name of this script is $script_name."


    这样的话, 命令的输出可以被当成传递到另一个命令的参数, 或者保存到变量中, 甚至可以用来产生for循环的参数列表.


    rm `cat filename`   # "filename" 包含了需要被删除的文件列表.
    
    textfile_listing=`ls *.txt`
    # 变量中包含了当前工作目录下所有的*.txt文件.
    echo $textfile_listing
    
    
    textfile_listing2=$(ls *.txt)   # 这是命令替换的另一种形式.
    echo $textfile_listing2
    # 同样的结果.
    
    
    # 将文件列表放入到一个字符串中的一个可能的问题就是
    # 可能会混进一个新行.
    #
    # 一个安全的将文件列表传递到参数中的方法就是使用数组.
    #      shopt -s nullglob    # 如果不匹配, 那就不进行文件名扩展.
    #      textfile_listing=( *.txt )

    例子:找anagram

    #!/bin/bash
    # 关于命令替换嵌套的例子.
    
    
    E_NOARGS=66
    E_BADARG=67
    MINLEN=7
    
    
    if [ -z "$1" ]
    then
      echo "Usage $0 LETTERSET"
      exit $E_NOARGS         # 脚本需要一个命令行参数.
    elif [ ${#1} -lt $MINLEN ]
    then
      echo "Argument must have at least $MINLEN letters."
      exit $E_BADARG
    fi
    FILTER='.......'         # 必须至少有7个字符.
    #       1234567
    Anagrams=( $(echo $(anagram $1 | grep $FILTER) ) )
    #           |     |    嵌套的命令替换        | |
    #        (              数组分配                 )
    
    
    echo
    echo "${#Anagrams[*]}  7+ letter anagrams found"
    echo
    echo ${Anagrams[0]}      # 第一个anagram.
    echo ${Anagrams[1]}      # 第二个anagram.
                             # 等等.
    
    
    # echo "${Anagrams[*]}"  # 在一行上列出所有的anagram . . .
    
    
    exit $?


  • 相关阅读:
    Java反射实现几种方式
    kettle之几个.bat初步介绍
    eclipse 启动项目时候报的错误
    转:kettle中调度kitchen.bat后面接参数,写定时更新任务
    hibernate4,manytomany
    hibernate4,onetomany
    Javascript系列之在HTML中使用JavaScript
    Javascript系列之js简介
    004 C++ 指针
    003 C++ 函数
  • 原文地址:https://www.cnblogs.com/new0801/p/6176856.html
Copyright © 2011-2022 走看看