我有一个名为的文件unimplemented.txt
,其名称如下:
verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx,./TDM/SDH.xls
verify-sdh-t1-satop-traffic-over-mpls-1plus1-xxx,./TDM/SDH.xls
如何使用 while 循环读取上面的文件并生成一个输出文件,其中/TDM/SDH_check.xls
包含
verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx
我尝试这样做,但它进入无限循环
while IFS="," read dummy casename tpname < "unimplemented.txt"
do
echo "$casename" > basename $tpname|sed -e 's/\..\+$//'
done
答案1
看来您的脚本中有几个问题:
你为什么
read dummy casename tpname
?在这一行中,read 正在等待 3 个字段,但您只需要 2 个字段。当你写 时
echo "$casename" > basename $tpname|sed -e 's/\..\+$//'
,它会:- 回声
$casename
到basename
(而不是$basename
)。 - 将
sed
替换应用于 echo... 的输出,这没什么。
- 回声
您使用
>
它将在每次调用时覆盖echo
。要附加,请使用>>
.
下面对我来说看起来是正确的,但不确定这是否是您想要的:
gcolangelo@NEO-L196:/tmp/pouet$ cat unimplemented.txt
verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx,./TDM/SDH.xls
verify-sdh-t1-satop-traffic-over-mpls-1plus1-xxx,./TDM/SDH.xls
verify-sdh-t2-satop-traffic-over-mpls-1for1-xxx,./TDM/SDG.xls
verify-sdh-t2-satop-traffic-over-mpls-1plus1-xxx,./TDM/SDG.xls
gcolangelo@NEO-L196:/tmp/pouet$ cat unimplemented.txt | while IFS=',' read casename tpname ; do echo "$casename"|sed -e 's/\..\+$//' >> $tpname ; done
gcolangelo@NEO-L196:/tmp/pouet$ cat TDM/SDH.xls
verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx
verify-sdh-t1-satop-traffic-over-mpls-1plus1-xxx
gcolangelo@NEO-L196:/tmp/pouet$ cat TDM/SDG.xls
verify-sdh-t2-satop-traffic-over-mpls-1for1-xxx
verify-sdh-t2-satop-traffic-over-mpls-1plus1-xxx