Я намагаюся зробити цю дуже просту програму bash, яка повинна робити наступні операції:
змінити файл Java n разів: кожен раз, коли я повинен змінити одне слово в одному рядку файлу (рядок - 11), я знаю, що є наступна команда, яка замінює одне слово в певному рядку програми на інший :
sed -i "11s/1/$n/" IC_masslessPlanetesimal.java
якщо я виконую вищевказану команду, я можу змінити файл один раз лише один раз, тому що в другій ітерації циклу у мене немає того самого слова, як у першій ітерації: я починаю з 1 у рядку 11, ніж у ітерації кулака Я змінююсь на
$n
(що дорівнює 2), але тепер ЯК Я можу змінитиsed
команду, щоб знову змінити слово (яке зараз дорівнює 2), щоб мати, наприклад, 3 у 11-му рядку?компілюйте файл java: це нормально;
змінити file.txt: знову та ж проблема, що і в 1) Я хочу змінити слово в рядку ітеративно з циклом або щось подібне;
передайте його у виконуваний файл: це друга проблема. Я змінив файл param.txt і тепер хочу прочитати його у виконуваний файл під назвою exec . Якщо я це роблю з терміналу, я повинен запустити exec. програма з командою
./exec
і після цього я повинен написати з екрана ім'я файлу.txt. Тепер можна запустити програму з bash і прочитати з нею файл file.txt? Я намагаюся:sed -i "13s/Zero/$n/" param.txt ./exec < param.txt
цей сценарій повинен змінити рядок 13 з Zero на $ 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
дуже дякую !!!
n
у файл, і наступного разу, коли ви запустите, ви cat
переведете файл у змінну, додасте 1 до значення і запишете його назад у файл. Потім запустіть програму java, передаючи аргумент.