接続数

COUNTER187707FROM 2011/4/22

証明日誌(proof diary)

数理的手法 >> 記事詳細

2017/10/08

試験プログラム自動実行記述

Tweet ThisSend to Facebook | by kaizen
file name: Te_1.sh

#!/bin/sh

clang++ -std=c++17 -stdlib=libc++ -Wall  Te_1.cpp -o  Te_1L

if [ ./Te1L -eq 1 ]
then
    echo "Te_1.cpp clang+; eq 1"
else
    echo "Te_1.cpp clang++ ne 1"
fi

 g++  -std=c++17  -Wall  Te_1.cpp  -o  Te_1G
 
 if [ ./Te1G -eq 1 ]
then
    echo "Te_1.cpp g++ eq 1"
else
    echo "Te_1.cpp g++ ne 1"
fi

実行結果

./Te_1.sh
./Te_1.sh: line 5: [: ./Te1L: integer expression expected
Te_1.cpp clang++ ne 1
./Te_1.sh: line 14: [: ./Te1G: integer expression expected
Te_1.cpp g++ ne 1

https://researchmap.jp/jodz41plm-1797580/#_1797580

return (int) argc;
なのに、integerじゃないって言われる。

Mac OS Xでの場合。
代入=の前後に空白があると駄目とのこと。

#!/bin/sh
# ver 0.1 20171008 Dr. Kiyoshi Ogawa
# ver 0.2 20171008 ..

clang++ -std=c++17 -stdlib=libc++ -Wall  Te_1.cpp -o  Te_1L

./Te_1L 3
ret=$?
r=2
# echo $ret;
if [ $ret -eq $r ] ;then
    echo "Te_1.cpp clang++ OK!" #,$ret
else
    echo "Te_1.cpp clang++ ne " $r
fi

g++  -std=c++17  -Wall  Te_1.cpp  -o  Te_1G
 
./Te_1G 3
ret=$?
r=2
#echo $ret;
if [ $ret -eq $r ] ;then
    echo "Te_1.cpp g++ OK!" #,$ret
else
    echo "Te_1.cpp g++ ne " $r
fi

# シェルスクリプト(bash)のif文とtestコマンド([])自分メモ
# https://qiita.com/toshihirock/items/461da0f60f975f6acb10
# C言語のreturn 0の有用性が今更わかった話
# https://qiita.com/nwtgck/items/32ea5dc3111a9514b12a
# [ShellScript] $?をif-elifで使ったら死ぬよ!!
# http://dqn.sakusakutto.jp/2013/10/shellscript_elif.html

実行結果

 ./Te_1.sh
188
100
100
3
"C++ Templates chapter1 About This book."
"Te_1.cpp "
Te_1.cpp clang++ OK!
188
100
100
3
"C++ Templates chapter1 About This book."
"Te_1.cpp "
Te_1.cpp g++ OK!

-----
プログラム名をコマンドパラメータとして入れる記述に変更

#!/bin/sh
# ver 0.1 20171008 Dr. Kiyoshi Ogawa
# ver 0.2 20171008 ..
# ver 0.3 20171008 ..

clang++ -std=c++17 -stdlib=libc++ -Wall  $1.cpp -o  $1L

./$1L 3
ret=$?
r=2
# echo $ret;
if [ $ret -eq $r ] ;then
    echo $1".cpp clang++ OK!" #,$ret
else
    echo $1".cpp clang++ ne " $r, $ret
fi

g++  -std=c++17  -Wall  $1.cpp  -o  $1G

./$1G 3
ret=$?
r=2
#echo $ret;
if [ $ret -eq $r ] ;then
    echo $1".cpp g++ OK!" #,$ret
else
    echo $1".cpp g++ ne " $r, $ret
fi

# シェルスクリプト(bash)のif文とtestコマンド([])自分メモ
# https://qiita.com/toshihirock/items/461da0f60f975f6acb10
# C言語のreturn 0の有用性が今更わかった話
# https://qiita.com/nwtgck/items/32ea5dc3111a9514b12a
# [ShellScript] $?をif-elifで使ったら死ぬよ!!
# http://dqn.sakusakutto.jp/2013/10/shellscript_elif.html

実行結果:途中でエラーで返るプログラムの例

./Te.sh Te_ba_stack1test
7
hello
Exception: Stack<>::pop(): empty stack
Te_ba_stack1test.cpp clang++ ne  2, 1
7
hello
Exception: Stack<>::pop(): empty stack
Te_ba_stack1test.cpp g++ ne  2, 1
17:51 | 投票する | 投票数(0) | コメント(0)