У меня есть каталог R_0, в котором я сохранил файл R_0.py, который создает много файлов в текущем каталоге и записывает в него.Изменять числовой символ и запускать файл автоматически
Я хочу автоматически запустить этот файл py, создать другой каталог R_1, скопировать R_0.py в этот каталог и переименовать его R_1.py, но до запуска R_1.py мне нужно изменить некоторые числовые поля в нем. Как только это будет сделано, мне нужно снова повторить задачу (каталог R_2 с файлом R_2.py и т. Д.)
Мне нужно сделать это 20 раз, поэтому у меня есть 20 каталогов с именем R_1, R_2, ..., R_20.
Я никогда раньше не использовал оболочку сценария (я знаю только основные команды, такие как ls, cd, mv и несколько других), но я думаю, что лучший способ сделать это 20-шаговую задачу - написать один.
Предположим, у нас есть этот R_0.py исходный файл (на самом деле это более сложный, но я полагаю, что это не важно для решения проблемы):
dummy = 2
Разница между всеми другими файлами ру в номер 2: в файле R_ $ {i} .py, мне нужно иметь dummy = expr(i)
, где expr (i) - это еще одно числовое значение, полученное путем выполнения некоторых арифметических операций над i, а не dummy = 2
.
Я написал .sh
файл bash
языка сайта:
#!/bin/bash
for i in $(seq 1 20) do
mkdir "/Users/usersos/Desktop/R_${i}" ;
cp "/Users/usersos/Desktop/R_0/R_0.py" "/Users/usersos/Desktop/R_${i}" ;
cd "/Users/usersos/Desktop/R_${i}" ;
mv R_0.py R_${i}.py ;
argument1=$((60000+150*i)) ;
sed 's/dummy = 2/dummy = ${argument1}/g' R_${i}.py ;
python R_${i}.py ;
done
Вопрос заключается в том, что моя команда sed
не пишет правильные вещи: в моем R _ $ {I} .py файлы, которые я нашел dummy = ${argument1}
вместо dummy = 60300
с i = 2, например.
Я искал через интернет и нашел инструмент awk
, но у меня не получилось.
использовать двойные кавычки вокруг сценария sed. переменные не будут расширяться в одинарных кавычках. – hek2mgl
Я сделал это. Чтобы проверить файл '.sh', я упростил файл R_0.py. Теперь он читает: 'dummy = 0'. Я также изменил 'sed 's/myFunction (0,0)/myFunction ($ {argument1}, $ {argument2})/g' R _ $ {i} .py;' to 'sed 's/dummy = 0/dummy = $ {argument1}/g "R _ $ {i} .py'. В результате файлы не изменяются, но в оболочке python печатает dummy = 60150 и dummy = 60300. Я предпочел бы, чтобы это было напечатано в моих файлах! – dada
Я меняю свой начальный пост в соответствии с изменениями в файле python. – dada