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

Linux bash脚本中具有特殊字符的参数,linux,bash,shell,perl,awk,Linux,Bash,Shell,Perl,Awk,我们有以下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-

我们有以下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

如何改进代码,以便从echo$val中获取原始值“*”或“@$!!”

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

IFS=,
while read -r param val 
do
    echo "$val"
done < doop.log
IFS=,
读取时-r参数val
做
回音“$val”
完成
您能正确缩进您的文件吗?请清理所有的点和空白,然后简单地发布一个脚本,复制您所问的任何问题(例如a)。
IFS=,
while read -r param val 
do
    echo "$val"
done < doop.log