Я пытаюсь заставить Octave изменять переменные в моих входных файлах, как если бы я использовал командную строку в Ubuntu. Я разделил это на простой случай, когда я получил его, чтобы изменить "1111" на строку Naer_str и "2222" на строку sigma_str; печать результата в новый файл. 1111 и 2222 присутствуют в первом файле. Вот весь код, который я запускаю ниже.
Naer_str= num2str(1000)
disp(Naer_str)
sigma_str = num2str(0.491)
eval(['system(''sed -e "s~1111~${Naer_str}~; s~2222~${sigma_str}~;" OctaveChangeVarTestFile.IN > OctaveChangeVarTestFile_out.IN'');']);
Создается новый входной файл, но вместо того, чтобы видеть значения 1000 и 0.491, как я ожидал, места, где должно быть 0.491 и 1000, являются пустыми. Запуск в режиме отладки показал следующее сообщение об ошибке (которое я видел много с тех пор, как несколько дней назад начал использовать Octave, но я до сих пор не понимаю, что это значит).
error: invalid use of script in index expression
Я попытался просто ввести материал в терминал Linux следующим образом:
Naer_str=1000
sigma_Str=0.491
sed -e "s/1111/${Naer_str}/; s/2222/${sigma_str}/;" OctaveChangeVarTestFile.IN > OctaveChangeVarTestFile_out.IN
Кажется, что это работает нормально, поэтому я предполагаю, что я, должно быть, допустил грамматическую ошибку, используя систему или eval, но я не вижу этого.
Что вызывает это сообщение об ошибке? Почему я не вижу ожидаемого результата?