如何制作bash脚本来运行C++;节目? 我有一个C++程序,它在Linux终端上运行的命令是: ./executable file input.txt parameter output.txt

如何制作bash脚本来运行C++;节目? 我有一个C++程序,它在Linux终端上运行的命令是: ./executable file input.txt parameter output.txt,bash,Bash,我想为它制作一个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 但这是不对的,因为它既没有输入,也没有数值参数。提前感谢。此脚本假定第一个参数是源文件名,并且是.cpp文件。为简洁起见,发出了错误处理 #!/bin/bash #set -x CC=

我想为它制作一个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

但这是不对的,因为它既没有输入,也没有数值参数。提前感谢。

此脚本假定第一个参数是源文件名,并且是.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
例如,运行带有参数“myprogram.cpp input.txt parameter output.txt”的脚本“doit”,我们可以看到:


我应该在脚本的哪一部分修改exe文件、输入和数字参数?抱歉,我是bash脚本的初学者。您不需要修改脚本——如果我正确理解您的用例,它应该按原样工作。或者你还有其他的期望吗?如果是这样,请修改您的问题,更准确地说明您希望脚本做什么。非常感谢。唯一的问题是,因为我有一个makefile,所以我有一个exe文件而不是cpp。这意味着我在终端中运行代码的命令是:./myprogram.exe input.txt parameter output.txt。如果您有一个已经生成可执行文件的makefile,您真的需要bash脚本来再次编译该文件吗?
% 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