在变量替换字符串后连接字符串

在变量替换字符串后连接字符串

我有以下脚本:

#!/bin/bash
cat list.txt | while IFS='' read -r a; 
#Remove all illegal characters
do
   a=${a//  /_}
   a=${a// /_}
   a=${a//\'/}
   a=${a//-/_}
   a=${a,,}
   filepath="/applications/"
   b=$filepath$a".csv"
   echo $b
done

预期结果应该是:

/applications/ahold_region
/applications/alb_sfy_region
/applications/awg_census_region
/applications/bjs_total_ta
/applications/delhaize_region
/applications/dollar_value_area

真实结果是:

.csvlications/ahold_region
.csvlications/alb_sfy_region
.csvlications/awg_census_region
.csvlications/bjs_total_ta
.csvlications/delhaize_region
.csvlications/dollar_value_area

看起来 bash 正在使用.csv替换 中的前 4 个字符$filepath

如何产生预期的结果?

答案1

CRLF不仅在脚本中,而且在list.txt.在我更改为LFshell 和后list.txt,问题解决了。

相关内容