我想在文本文件列表上执行bash脚本(我猜是使用for
循环),将stdout重定向到一个文件,其路径与stdin的文本文件相同,加上一个扩展名(for例如.txt或.sam,或者只是将〜添加到stdin路径的末尾以使其不同)。
答案 0 :(得分:4)
好的,假设列表不是太长,你可以从
开始 for i in `cat list`
do
# do stuff here
done
如果列表足够长以冒命令太长的命令行,那么就会有一些变体
cat list | while read i
do
# do stuff here
done
您可以使用basename(1)构造文件名以删除旧的扩展名后缀;比如.txt到.bak使用
`basename .txt ${i}`.bak
您可以使用dirname(1)
获取路径部分由于宏是早期扩展的,您可以简单地在变量中构造命令行并展开它们。 op和np是你的路径名称
command < $op > $np
有一本可爱的在线图书,bash Advanced Scripting Guide涵盖了这本书以及更多内容。