首页 > 解决方案 > 变量引用在 shell 脚本中的 echo 命令中不起作用

问题描述

我在不同的行中创建了两个具有完全相同数据“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 上在两个终端上获得相同的结果。

标签: linuxshell

解决方案


您正在使用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

推荐阅读