bash 脚本的输出文件名中的奇怪符号
Strange symbol in output filename from bash script
我有一个 bash 脚本,它采用包含 115 行数据的单个文本文件 'power_coords.txt',并且在每一行中有四个(space 分隔的)包含 x 的列, y,z 坐标(前 3 列)和名称(第 4 列)。示例:
36 54 19 cotc1
45 13 -27 cotc2
1 -6 14 cotc3
....
我的脚本 运行 将以下代码行 运行 对文本文件的每一行进行操作:
#!/bin/bash
input="power_coords.txt"
while IFS=" " read x y z name
do
fslmaths avg152T1.nii.gz -mul 0 -add 1 -roi $x 1 $y 1 $z 1 0 1 $name -odt float
done < "$input"
这似乎工作得很好,但是当我 运行 代码时,我在创建的每个文件名中得到一个奇怪的符号:
有谁知道为什么会这样以及如何解决?或者在脚本具有 运行?
之后清理文件名的简单方法(即删除看起来像 lego 的位)
干杯
您的屏幕截图中的小方块显示“000D”,因此它只是一个 CR newline symbol。
首先,我建议通过打印来检查变量 $name
中的内容:
while IFS=" " read x y z name
do
echo "aaa${name}bbb"
done < "$input"
aaa
和 bbb
可以更轻松地查看输出。
这也有助于检查 power_coords.txt
中使用的字符。您可以通过将路径传递给 utility file
来检查它。它应该打印出文件中使用了哪个"line terminator"。
在弄清楚 $name
中读入的内容后,您可以转换 power_coords.txt
中的换行符,或调整 IFS
以允许 CR 也被视为分隔符。
我有一个 bash 脚本,它采用包含 115 行数据的单个文本文件 'power_coords.txt',并且在每一行中有四个(space 分隔的)包含 x 的列, y,z 坐标(前 3 列)和名称(第 4 列)。示例:
36 54 19 cotc1
45 13 -27 cotc2
1 -6 14 cotc3
....
我的脚本 运行 将以下代码行 运行 对文本文件的每一行进行操作:
#!/bin/bash
input="power_coords.txt"
while IFS=" " read x y z name
do
fslmaths avg152T1.nii.gz -mul 0 -add 1 -roi $x 1 $y 1 $z 1 0 1 $name -odt float
done < "$input"
这似乎工作得很好,但是当我 运行 代码时,我在创建的每个文件名中得到一个奇怪的符号:
有谁知道为什么会这样以及如何解决?或者在脚本具有 运行?
之后清理文件名的简单方法(即删除看起来像 lego 的位)干杯
您的屏幕截图中的小方块显示“000D”,因此它只是一个 CR newline symbol。
首先,我建议通过打印来检查变量 $name
中的内容:
while IFS=" " read x y z name
do
echo "aaa${name}bbb"
done < "$input"
aaa
和 bbb
可以更轻松地查看输出。
这也有助于检查 power_coords.txt
中使用的字符。您可以通过将路径传递给 utility file
来检查它。它应该打印出文件中使用了哪个"line terminator"。
在弄清楚 $name
中读入的内容后,您可以转换 power_coords.txt
中的换行符,或调整 IFS
以允许 CR 也被视为分隔符。