2017-08-16 147 views
-1

我們有以下的CSV文件,參數在bash腳本特殊字符

文件中包含的參數和值

 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 

問題是當val是「*」或「@ $ !!」時或其他特殊字符,然後我們得到了不同的價值來自:

echo $val 

如何改進,以獲得原始值作爲代碼「*」或「@ $!」 from echo $ val

+1

您可以正確縮進文件嗎? –

+0

請清理所有這些點和空格,並簡單地發佈一個腳本,以重現您所問的任何問題(即[mcve])。 –

回答

0

要防止擴展特殊字符,可以將變量括在雙引號之間。順便說一句,您不必使用awk,只需更改IFS:

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