我们有以下CSV文件,
文件包含参数和值
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 &#34; *&#34;或者&#34; @ $ !!&#34; 或其他特殊字符,然后我们得到不同的价值:
echo $val
如何改进代码以获得原始值&#34; *&#34;或&#34; @ $ !!&#34;来自echo $ val
答案 0 :(得分:0)
要防止扩展特殊字符,可以将变量括在双引号之间。另外,您不必使用awk,只需更改IFS:
IFS=,
while read -r param val
do
echo "$val"
done < doop.log