2016-03-08 2 views
2

Итак, я грейдер в своем колледже, и я пытаюсь создать скрипт bash, который читает в скомпилированной c-программе в качестве аргумента и затем запускает кучу тестов в программе, которая тестирует множество разных сценариев, так что мне не нужно запускать программу с разными входами каждый раз.Сценарий bash, который принимает .c имя файла в качестве аргумента, а затем выполняет этот файл

Это то, что у меня есть

#!/bin/bash 
#test.sh 
read studentFile 


$studentFile "1011" "2" "10" 
echo "11" 
./$studentFile "1011" "2" "16" 
echo "B" 
./$studentFile "1010" "2" "8" 
echo "12" 
./$studentFile "FA" "16" "2" 
echo "11111010" 
./$studentFile "12" "8" "2" 
echo "1010" 

и т.д. (печать из после каждого исполнения правильный ответ, что программа должна вернуться и матч)

Всякий раз, когда я запускаю это с одним скомпилированный с программой в качестве входа т.е.

./test.sh studentfilename 

возвращает эту ошибку

./test.sh: line 8: ./: Is a directory 

для каждой строки, где я пытаюсь запустить программу.

Я протестировал входной файл и убедился, что он работал, прежде чем пытаться ввести его в этот тестовый скрипт.

Кто-нибудь знает, как взять файл в качестве входа и запустить его?

Любая помощь очень благодарна спасибо!

+2

Не связанный с основной проблемой, вам придется скомпилировать исходный файл перед его выполнением в типичной среде. – MikeCAT

+1

Хммм ... просто название путается, и в вопросе говорится, что скрипт bash читается в * скомпилированной c-программе *. – MikeCAT

ответ

3

Поскольку вы вызываете скрипт с скомпилированной программы в качестве аргумента, вам нужно использовать

studentFile=$1 

не

read studentFile 
+0

Спасибо, что была проблема! –

2

вы хотите передать имя файла с помощью параметра командной строки, так вы должны использовать переменные, такие как $1, чтобы получить имя.

Попробуйте studentFile=$1 вместо read studentFile.

+0

спасибо, что была проблема! –