如何使用Bash shell脚本存储C程序的输出

问题描述 投票:-1回答:2

这是我的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”。

我想执行代码,仅保存true / false部分(即排除所有其他printf的部分)。如何存储文件的输出以及输入文件的内容?

c bash shell output sh
2个回答
0
投票
./a.out < input.txt > output.txt

0
投票

我为a.out做了替代,可以用于测试。 is_add.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

您如何在文件中具有相同的输出而只有false / true?使用tee将输出发送到屏幕以及进行过滤的某些过程:

testset | tee >(egrep "false|true" > output)

我认为以上命令最适合您的问题,我希望查看输入字符串:

testset | tee >(egrep "Input|false|true" > output)
© www.soinside.com 2019 - 2024. All rights reserved.