【发布时间】:2012-12-19 23:10:06
【问题描述】:
我正在学习 bash 脚本,我编写了这个简单的脚本:
#!/bin/bash
for f in $(cat test.csv | cut -d';' -f 4)
do
EXT=".pdf"
echo "$f$EXT"
done
文件 test.csv 在哪里:
col1;col2;col3;test1
col1;col2;col3;test2
col1;col2;col3;test3
...
这个脚本的输出是:
.pdf
.pdf
.pdf
...
预期的输出是:
test1.pdf
test2.pdf
test3.pdf
...
很抱歉提出愚蠢的问题,但我认为这是一个小问题。
与此脚本相同的输出:
#!/bin/bash
while IFS=\; read col1 col2 col3 col4
do
echo "$col4".pdf
done < test.csv
【问题讨论】:
-
它是你真正的 test.csv 吗?您正在提取以分号分隔的列中的第 4 列,但您的示例没有第 4 列。
-
是的,test.csv感兴趣的内容是第4列。固定。
-
如果 test.csv 确实有 4 列或更多,请编辑您的问题并显示真实示例(即使它们无趣,我们也可以看到 4 列)。
-
刚刚尝试了你原来的 for 循环,它对我来说很好用。脚本中是否还有其他内容被您删掉了?或者,您确定输入文件
test.csv中没有控制字符吗?顺便说一句,你是如何运行脚本的? -
重要的是要注意该脚本仅适用于
echo "$col4"而没有 .pdf 字符串。我通过 macosx 终端 ./script 运行它
标签: string macos bash loops for-loop