变量引用在 shell 脚本中的 echo 命令中不起作用

时间:2021-03-31 00:55:17

标签: linux shell

我在不同的行中创建了两个具有完全相同数据 'a'、'b'、'c'、'd'、'e' 的文件
1。来自 ms office 2019 的 testing_office.csv 文件。
2。 testing_txt_editor.csv 使用 sublime text
以下是使用的 shell 脚本。

object_type=$1

for object in `cat ${object_type}`
do
echo "test before object reference" ${object}
echo ${object} "random text after the object reference"
done

我正在通过 zsh shell 运行代码以下是使用的命令和输出

argarvit >>% ./testing.zsh testing_office.csv 
test before object reference a
a random text after the object reference
test before object reference 
 random text after the object reference
test before object reference b
 random text after the object reference
test before object reference c
 random text after the object reference
test before object reference d
 random text after the object reference
test before object reference e
e random text after the object reference

argarvit >>% ./testing.zsh testing_txt_editor.csv 
test before object reference a
a random text after the object reference
test before object reference b
b random text after the object reference
test before object reference c
c random text after the object reference
test before object reference d
d random text after the object reference
test before object reference e
e random text after the object reference

如果引用后有一些文本,为什么这两个文件的行为不同?问题可能与编码有关,但我如何找出确切原因?我尝试在文本编辑器上打开 testing_office.csv 它看起来一样。我尝试了 MBP 和 AL2,在两个终端上都得到了相同的结果。

1 个答案:

答案 0 :(得分:0)

您使用的是 Useless Use of cat,唉,我无法重现您的问题。所述文件之间可能存在核心差异。您可以od -c检查每个文件。

您可能想尝试使用 while read 循环而不是反引号扩展:

while read object ; do
        echo "test before object reference" ${object}
        echo ${object} "random text after the object reference"
done <$1
相关问题