所以我有這個腳本來檢查一個數字是否是我期望的數字。但我想直接用C程序輸出來測試它,而不是將結果存儲在文件中。我如何更改這個腳本
#!/bin/bash
j=0;
for i in {1..100};
do ./a.out > output;
cmp expected output || let "j+=1";
done
echo $j;
./a.out是指打印一個數字的程序。我想檢查它是否與預期存儲的一樣,但不使用文件
所以我有這個腳本來檢查一個數字是否是我期望的數字。但我想直接用C程序輸出來測試它,而不是將結果存儲在文件中。我如何更改這個腳本
#!/bin/bash
j=0;
for i in {1..100};
do ./a.out > output;
cmp expected output || let "j+=1";
done
echo $j;
./a.out是指打印一個數字的程序。我想檢查它是否與預期存儲的一樣,但不使用文件
您可以使用$(command)
將命令的輸出替換爲命令行。
expected=$(< expected)
j=0
for i in {1..100}; do
test "$(./a.out)" = "$expected" || let j+=1
done
echo $j
這個工作對我罰款(用一個簡單的回聲腳本替換的a.out):
#!/bin/bash
j=0;
for i in {1..100};
cmp expected <(./a.out) || let "j+=1";
done
echo $j;
人的bash:
進程替換
進程替換允許一個進程的輸入或輸出使用文件名引用。它採取<(列表)或>(列表)的形式。進程列表異步運行,其輸入或輸出顯示爲文件名。
這個腳本似乎沒有做你所描述的... –
C與這個有什麼關係?你真的認爲它重要的是什麼語言'a.out'被寫入? bash代碼是相同的。 – Barmar