2013-03-21 72 views
0

我有一个C++程序和命令在Linux终端运行是:我应该如何创建一个bash脚本来运行C++程序?

./executable file input.txt parameter output.txt 

我想打一个bash脚本它,但我不能。我试过这一个:

#!/bin/bash 
file_name=$(echo $1|sed 's/\(.*\)\.cpp/\1/') 
g++ -o $file_name.out $1 
if [[ $? -eq 0 ]]; then 
    ./$file_name.out 
fi 

但它是不正确的,因为它没有得到输入和数值参数。提前致谢。

回答

2

此脚本假定第一个参数是源文件名,并且它是一个.cpp文件。错误处理发射简洁。

#!/bin/bash 
#set -x 
CC=g++ 
CFLAGS=-O 
input_file=$1 
shift # pull off first arg 
args="$*" 
filename=${input_file%%.cpp} 

$CC -o $filename.out $CFLAGS $input_file 
rc=$? 

if [[ $rc -eq 0 ]]; then 
    ./$filename.out $args 
    exit $? 
fi 

exit $rc 

因此,例如运行脚本“DOIT”的论据“myprogram.cpp input.txt的参数output.txt的”,我们看到:

% bash -x ./doit myprogram.cpp input.txt parameter output.txt 
+ set -x 
+ CC=g++ 
+ CFLAGS=-O 
+ input_file=myprogram.cpp 
+ shift 
+ args='input.txt parameter output.txt' 
+ filename=myprogram 
+ g++ -o myprogram.out -O myprogram.cpp 
+ rc=0 
+ [[ 0 -eq 0 ]] 
+ ./myprogram.out input.txt parameter output.txt 
+ exit 0 
+0

,并在你的脚本的一部分,我应该修改我的exe文件,输入和数值参数?对不起,我是bash脚本编程的初学者。 – MTT 2013-03-21 22:46:12

+0

如果我正确理解了您的用例,则不需要修改脚本 - 它应该按原样运行。还是你有其他的期望?如果是这样,请修改您的问题,更准确地说明您希望脚本执行什么操作。 – TheDuke 2013-03-22 00:32:55

+0

非常感谢。唯一的是,因为我有一个makefile,那么我有一个exe文件,而不是cpp。这意味着我在终端中运行代码的命令是:./myprogram.exe input.txt参数output.txt。 – MTT 2013-03-22 02:03:26

相关问题