Я пытаюсь сделать эту очень простую программу bash, которая должна выполнять следующие операции:

  1. изменяйте файл Java n раз: каждый раз, когда мне нужно изменить одно слово в одной строке файла (строка 11), я знаю, что есть следующая команда, которая заменяет одно слово в определенной строке программы другой. :

    sed -i "11s/1/$n/" IC_masslessPlanetesimal.java
    

    если я выполняю вышеуказанную команду, я могу изменить только один раз файл file.java, потому что во второй итерации цикла for у меня не то же самое слово, что и в первой итерации: я начинаю с 1 в строке 11, чем в первой итерации Я изменяю с помощью $n (что равно 2), но теперь, КАК я могу изменить команду sed чтобы снова изменить слово (которое теперь равно 2), чтобы иметь, например, 3 в 11-й строке?

  2. скомпилируйте файл java: все нормально;

  3. изменить файл .txt: опять та же проблема, что и в 1) Я хочу изменить слово в строке итеративно с циклом for или что-то в этом роде;

  4. передать его в исполняемый файл: это вторая проблема. Я изменил файл param.txt и теперь хочу прочитать его в исполняемый файл с именем exec. Если я делаю это из терминала, я должен запустить exec. Программа с командой ./exec и после этого я должен написать с экрана имя файла .txt. Теперь можно ли запустить программу из bash и прочитать вместе с ней файл file.txt? Я пытаюсь с:

    sed -i "13s/Zero/$n/" param.txt
    ./exec < param.txt   
    

этот сценарий должен изменить строку 13 с нуля на $ n в param.txt, как я могу запустить exec программу с помощью команды ./exec с конкретным файлом param.txt.

#!/bin/bash

n=0
for n in "2" "3" 
do
  sed -i "11s/1/$n/" IC_masslessPlanetesimal.java
  javac IC_masslessPlanetesimal.java  
  java IC_masslessPlanetesimal
 sed -i "13s/Zero/$n/" param.txt
 ./exec < param.txt   
done

большое спасибо !!!

1 ответ1

0
  1. Вместо редактирования файла на месте:

    sed -i "11s/1/$n/" IC_masslessPlanetesimal.java
    

    скопируйте его в файл шаблона, скажем, IC_masslessPlanetesimal.java.template, а затем создайте новую версию для каждого n:

    sed "11s/1/$n/" < IC_masslessPlanetesimal.java.template > IC_masslessPlanetesimal.java
    
  2. Такой же как 1

  3. Да, ./exec < param.txt правильно. Разве это не работает?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .