Начало работы с сценариями оболочки?

Я не знаком с сценариями оболочки, поэтому я не уверен, как это сделать или если это возможно. Если вы можете дать мне ссылки или советы, это было бы здорово.

Что я хочу сделать, это:

  • Создайте файл, простой текстовый файл EX:

    param1 (случайное значение)

    Где randomvalue - это генерируемое случайное число.

  • запустить программу с тем файлом, который мы только что создали, и вывести его в файл

    ./program filewejustcreated > A

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

  • запустите другую программу с файлом, который мы только что создали, программа уже существует и поместите его в файл

./ Другой файл программы был создан> B

  • запустить команду diff на A, B

    diff AB

Показать что diff возвращает...

Спасибо

[Править] Я использую оболочку: tcsh

3 ответа

Вы уже почти написали сценарий. Единственная пропущенная вещь - это случайное число; Я сделаю это с Perl. Вот быстрое и грязное решение в sh (или bash; я предполагаю, что вы работаете в системе Linux/Unix):

#!/bin/sh
perl -e 'print "TheWord (", int(rand(1000)), ")\n"' > tempfile
./program tempfile > A
./Anotherprogram tempfile > B
# rm tempfile  # this would delete 'tempfile' if uncommented
diff A B

Теперь сохраните это в файле (скажем, script.sh) и выполните в оболочке:

chmod +x script.sh

сделать его исполняемым, и

./script.sh

запустить его.

Я не уверен насчет функции для генерации случайного числа в tcsh. Однако в более распространенной оболочке, такой как BASH, ссылки на переменную $RANDOM, генерирует случайные числа.

Итак, в вашем сценарии оболочки (BASH сценарий оболочки здесь), содержимое будет:

#Pick the first argument to the call as the file name
FILE_NAME=shift
echo "param1 $RANDOM" > $FILE_NAME
./program $FILE_NAME > $FILE1
./Anotherprogram $FILE_NAME > $FILE2
diff $FILE1 $FILE2

Сценарии оболочки в основном сводят воедино разные программы, чтобы сделать работу. Есть много программ, которые выполняют только одну простую вещь и могут быть объединены для выполнения более масштабных задач, о которых вы узнаете, попав в мир сценариев оболочки. Пример большого сценария оболочки - сценарий Perl Configure. В первом бите вы видите (вместе с некоторыми юмористическими комментариями) cat, true, sh, rm, test, sed, uname и grep.

Другие вопросы по тегам