2014-11-18 2 views
0

Я во многих отношениях чрезвычайно новичок в программировании, поэтому благодарю вас за то, что вы смирились с моим идиотизмом, потому что я уверен, что я не прошу об этом правильно.Использование сценария оболочки и BC

Впервые за многие годы мне приходится использовать Linux-машину и много командной строки. Мне нужно сделать симуляцию Монте-Карло, используя облачную модель, которая написана и готова к работе. У него есть входной файл, который мне нужно изменить, чтобы установить входные значения, которые должны быть сгенерированы с использованием генератора случайных чисел. Мой руководитель настаивает на том, что я использую BC для генерации случайных чисел.

Насколько я понимаю, BC является языком. Я скачал его с помощью:

sudo apt-get install bc 

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

Я не понимаю, как я могу использовать bc и bash в одно и то же время. Если я войду в команду BC, он просто сделает это? Выполняет ли BC выполнение команд оболочки? Как это работает?

В вашем ответе помните, что Я просто обезьяна-лаборатория, оставленная с компьютером, который ничего не понимает в программировании.

ответ

1

Один из способов взаимодействия между shell и bc:

$ echo "$RANDOM % 5" | bc 

будет печатать случайное число в диапазоне от 0 до 4

$RANDOM является псевдо случайное целое использовать непосредственно в оболочке.

Обратите внимание, что двойные кавычки являются обязательными для использования переменных оболочки. С одинарными кавычками переменные никогда не будут оцениваться.

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

value=$(echo "$RANDOM % 5" | bc) # 0 10 4 
((value*10))      # value X 10 
echo $value      # display $value value 
echo "scale=2; $value/100" | bC# scale=display 2 decimal 
1

Вы можете использовать bc в сценарии оболочки, например

#!/bin/bash 

# Generate random number between 0 and 9 
RANDVAR=$(echo "$RANDOM % 10" | bc) 
echo $RANDVAR 

Этот простой скрипт показывает, как вы можете назначить имя переменной и использовать ее позже в скрипте. Будет запущено что-либо в «$()», а результат присваивается имени (в данном случае RANDVAR). Вы можете использовать эту переменную позже в своей подстановке, используя, например, sed.

+1

В 2014 году лучше использовать '$()' вместо 'backticks' –

+0

@sputnick Справедливая точка, я обновил свой ответ. –

+0

Число, сгенерированное при приеме $ RANDOM modulo 10, будет смещенным и, следовательно, непригодным для Монте-Карло, так как диапазон $ RANDOM равен 0 - 32767. –

Смежные вопросы