【发布时间】:2010-10-07 11:12:47
【问题描述】:
大家早上好, 我正在编写一个 bash 脚本来从给定目录中的所有文件中提取某些 XML 标记的值。我决定通过标记每一行并返回相关标记来做到这一点。问题是它没有正确标记,我不太明白为什么。这是我可以做的最小的例子来重建问题
#!/bin/bash
for file in `ls $MY_DIRECTORY`
do
for line in `cat $MY_DIRECTORY/$file`
do
LOCALIFS=$IFS
IFS=<>\"
TOKENS=( $line )
IFS=$LOCALIFS
echo "Token 0: ${TOKENS[0]}"
echo "Token 1: ${TOKENS[1]}"
echo "Token 2: ${TOKENS[2]}"
echo "Token 3: ${TOKENS[3]}"
done
done
我猜这个问题与我在一个本身使用 IFS(即 cat 操作)的循环中摆弄 IFS 有关,但这以前从来不是问题。
有什么想法吗?
谢谢, 里克
【问题讨论】:
-
请给出文件中的示例行并描述输出不正确的原因
-
这里有很多初学者错误(
for i in $(ls),UUOC...)。见bash pitfalls。