我想在文本文件列表上执行bash脚本(使用for
循环,我猜),将stdout重定向到一个文件与stdin中的文本文件相同的路径加上一个扩展名(例如.txt或.sam,或者只是在stdin路径的末尾添加〜以使其不同)。对stdin上的文件列表执行bash命令并将stdout重定向到相关文件
回答
好吧,假设名单不会太长,你可以用
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
您可以使用目录名(1)
由于宏年初展开,你可以简单地构建变量的命令行和扩大他们获取路径的一部分。其中op和NP是你的路径名
command < $op > $np
有一个可爱的在线书,覆盖此多的bash Advanced Scripting Guide。
http://mywiki.wooledge.org/DontReadLinesWithFor显然,'cat'是[无用的](http://www.iki.fi/era/unix/award.html)。 – tripleee 2015-06-30 04:26:05
另请参阅http://wiki.bash-hackers.org/scripting/tutoriallist#rv_abs关于ABS指南的一些(非常温和的)注意事项。共识是,它不应该成为您的脚本建议的第一站。链接页面推荐一些其他教程(向后滚动几个凹槽)。 – tripleee 2015-06-30 04:27:49
也许后续元:http://meta.stackoverflow.com/questions/298192/disagreement-on-duplication-action – tripleee 2015-06-30 06:42:59
- 1. 将Stdin和Stdout重定向到文件
- 2. Bash:从文件读取stdin并将stdout写入文件
- 3. 将stdin stdout重定向到多个文件
- 4. GDB/MI将stdin和stdout重定向到文件
- 5. 将stdin和stdout重定向到stdin首先关闭的位置
- 6. 用于上传文件并执行bash命令的HTML表单
- 7. 将多个文件重定向到stdin
- 8. XP的命令提示符:文件重定向到STDOUT
- 9. 将stdout重定向到文件问题?
- 10. bash脚本不会将stdout重定向到文件
- 11. 如何在Java中执行命令并将其输出重定向到文件
- 12. linux打印到STDOUT并使用单个命令重定向到文件
- 13. 从命令行可执行文件输入/输出重定向到文件
- 14. 如何将bash变量重定向到可执行文件?
- 15. 如何让bash将多行格式的命令输出重定向到文件
- 16. 有没有办法将Bash命令直接重定向到S3文件对象?
- 17. 重定向到文件以及bash中的STDOUT
- 18. 如何将数据重定向到单个可执行文件中的stdin?
- 19. 运行一个进程并将stdin/strout重定向到特定文件
- 20. BASH在执行时将stdout保存到新文件
- 21. Linux命令对特定文件夹中的新文件“执行”?
- 22. Bash脚本:将慢速命令的输出重定向到文件
- 23. bash将命令输出重定向到带有空格分隔符的文件
- 24. 将命令行日志重定向到文件时出现`pause`命令问题
- 25. 遍历两个外部文件列表并在bash脚本中执行命令
- 26. 将命令的输出重定向到文件和stdout [只有一次,而不是在每个命令]
- 27. 将多个命令的输出重定向到一个文件
- 28. 将文件的输出重定向到写入命令
- 29. 将git命令的错误重定向到日志文件
- 30. 监视文件夹并执行命令
我迷路了,你能举一个你想要完成的例子吗? – Freddy 2012-04-11 16:46:11
@tripleee你确实观察到2012年有人问这个问题,并且在2013年提出了你声称重复的问题,对吧?我的意思是,你*确实*认为要检查日期,以免引起时代错误并破坏空间连续体。 – 2015-06-30 06:25:15
@CharlieMartin感谢提问。我没有注意到,没有;但问题的年龄是次要问题。不管问题的年龄如何,对问题和/或多个好答案的更好阐述的问题是作为“重复”目标的更好选择;而当两个问题都比较陈旧时,尤其是两者中的较新者更加规范。 – tripleee 2015-06-30 06:44:22