Начало работы с сценариями оболочки?
Я не знаком с сценариями оболочки, поэтому я не уверен, как это сделать или если это возможно. Если вы можете дать мне ссылки или советы, это было бы здорово.
Что я хочу сделать, это:
Создайте файл, простой текстовый файл 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.