代码之家  ›  专栏  ›  技术社区  ›  King David

bash脚本中具有特殊字符的参数

  •  -1
  • King David  · 技术社区  · 8 年前

    文件包括参数和值

          more hadoop.txt
    
          security.admin.protocol.acl,*
          security.client.protocol.acl,***
          xasecure.add-hadoop-authorization,true
          ranger.plugin.hdfs.policy.rest.ssl.config.file,/etc/hadoop/conf/ranger-policymgr-ssl.xml,
          ranger.plugin.hdfs.policy.source.impl,org.apache.ranger.admin.client.RangerAdminRESTClient
          ranger.plugin.hdfs.policy.cache.dir,/etc/ranger/{{repo_name}}/policycache",
          ranger.plugin.hdfs.policy.pollIntervalMs,@$!!
          ranger.plugin.hdfs.service.name,{{repo_name}}
    

    以下代码是我的bash脚本的一部分:

    while read -r line 
    do 
    
    param=` echo $line |  awk -F ',' '{print $1}' `
    val=` echo $line |  awk -F ',' '{print $2}' `
    echo $val
    if [[ $val = $hadoop_val ]]
    them
    
    done < $hadoop.txt
    

    “*”或“@$!!”

    echo $val 
    

    1 回复  |  直到 8 年前
        1
  •  0
  •   Casimir et Hippolyte    8 年前

    为了防止特殊字符被扩展,可以将变量括在双引号之间。另外,您不必使用awk,只需更改IFS即可:

    IFS=,
    while read -r param val 
    do
        echo "$val"
    done < doop.log
    
    推荐文章