c - 如何使用 Bash shell 脚本存储 C 程序的输出
问题描述
这是我的 C 程序
int main(){
int n;
while(1){
printf("Enter n:\n");
scanf("%d",&n);
switch(n){
case 1: int t;
scanf("%d",&t);
if(t<10)
printf("true");
else printf("false");
break;
case 2: char c;
scanf("%c",c);
if(c=='a') printf("true");
else printf("false");
break;
case -1: break;
}
if (n==-1) break;
}
return 0;
}
这是我的 bash shell 脚本
./a.out << 'EOF'
1
4
2
b
-1
EOF
这将执行代码但不保存输出
./a.out > outputfile
上面的代码将保存输出,包括“Enter n”。
我想执行代码并只保存真/假部分(即排除所有其他printf)。如何存储文件的输出并为其提供输入?
解决方案
我为 a.out 做了一个替代品,我可以用它来测试。is_odd.sh
寻找奇数:
#!/bin/bash
exitfalse() {
echo $*
echo false
exit 1
}
exittrue()
{
echo $*
echo true
exit 0
}
[ $# -eq 0 ] && exitfalse I wanted a number
[[ $1 =~ [0-9]+ ]] || exitfalse Only numbers please
(( $1 % 2 == 0 )) && exitfalse Even number
exittrue Odd number
使用这个冗长的脚本会产生很多垃圾
#!/bin/bash
testset() {
for input in john doe 1 2 3 4; do
echo "Input ${input}"
./is_odd.sh "${input}"
done
}
testset
你怎么能在一个文件中有相同的输出并且只有假/真?用于tee
将输出发送到屏幕和一些将进行过滤的进程:
testset | tee >(egrep "false|true" > output)
我认为上面的命令最适合您的问题,我希望看到输入字符串:
testset | tee >(egrep "Input|false|true" > output)
推荐阅读
- sql - 如何创建唯一 id 条目并过滤这些 id 的特定列值(Postgresql)
- python - 如何在 Python 中组合多个 try 和 except
- apache-spark - 使用 PySpark 使用用户 ID 填充空值
- javascript - 来自谷歌表格的补丁请求覆盖以前的帖子请求
- python - Numpy根据条件将3d数组减少到2d
- flutter - 在 Flutter 中遇到 SocketException 问题:无法创建服务器套接字
- c# - BLE 设备在 Windows 10 中不再可连接
- swift - Facebook Graph API:GET /me/accounts 端点上的查询返回空数据
- reactjs - 如何从api对react js表中的复杂日期值进行排序
- laravel - 如何根据用户身份验证更改扩展哪个模板