bash - 使用多指令(带有 cicles 和语句)bash 脚本创建 stdout 和 stderr 文件
问题描述
我有一个 bash 脚本,其中包含多个指令,例如循环和语句。
我想创建一个 stdout 和 stderr 文件来打印分析过程中可能发生的错误。
但是,此论坛和其他论坛中的建议无法正常工作:实际上,尽管正确执行了分析,但没有生成文件。
这是我的代码框架:
#!bin/bash
{
start=`date +%s` ;
while IFS=, read -r col1 col2 ;
do
name="$col1$col2" ;
done < "/path/to/file.csv" ;
...
for file in ./*txt
do
operation1
operation2
done
} > stdout.txt 2stderr.txt
tar -zcf ./folder
我试图用和 (&) 更改分号 (;) 但没有奏效。你们有什么线索吗?
提前致谢。
解决方案
你很接近,假设你operation1
写operation2
了stdout
orstderr
取决于每个命令的结果,你想要
#!/bin/bash
{
commands
} 2>stderr.txt >stdout.txt
tar ... stuff
你重定向到stderr
then to stdout
(最好是任何一个顺序都可以)......但重要的部分是2
and之间没有空格>
。
简单的工作示例
#!/bin/bash
{
[ 1 -eq 1 ] && echo "good int"
[ a -eq a ] && echo "good char"
} 2>stderr.txt >stdout.txt
结果
$ cat stdout.txt
good int
$ cat stderr.txt
./s.sh: line 5: [: a: integer expression expected
推荐阅读
- ios - 与使用 UIViewController + UICollectionView 相比,使用 UICollectionViewController 是否合适?
- react-native - React Native Flatlist - 使用 Redux 作为数据属性......当 Redux 状态更改时不会重新渲染
- javascript - 从 x 轴莫里斯图中删除重复值
- python - 用于字典迭代的python MPI
- c++ - 如何在 CMFCMenuBar 上动态插入菜单?
- git - 你能检查一个 git commit 的时间戳是否是从 GitHub 编辑的吗?鉴于这些提交是在项目上传之前完成的
- sql - 得到员工的上级。然后再次得到员工上级的上级。等等
- typescript - Typescript 如何限制泛型函数中的子类?
- javascript - 如果字段为空则隐藏列 table.bootstrapTable
- api - API中韩国的国家名称是什么?