Sto cercando di convincere Octave a modificare le variabili nei miei file di input come se usasse la riga di comando in Ubuntu. L'ho spogliato in un semplice caso in cui ho avuto la possibilità di cambiare "1111" nella stringa Naer_str e "2222" nella stringa sigma_str; stampando il risultato in un nuovo file. 1111 e 2222 sono entrambi presenti nel primo file. Ecco l'intero codice che sto seguendo qui sotto.Come posso ottenere da Octave la modifica delle variabili nei miei file di input?
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'');']);
Il nuovo file di input è fatto, ma piuttosto che vedere i valori 1000 e 0.491, come ho anticipato i luoghi dove 0.491 e il 1000 dovrebbe essere sono vuoti. L'esecuzione in modalità debug ha mostrato il seguente messaggio di errore (che ho visto molto da quando ho iniziato ad usare Octave qualche giorno fa, ma ancora non capisco cosa significhi).
error: invalid use of script in index expression
ho cercato solo roba inserendo nel terminale di Linux in questo modo:
Naer_str=1000
sigma_Str=0.491
sed -e "s/1111/${Naer_str}/; s/2222/${sigma_str}/;" OctaveChangeVarTestFile.IN > OctaveChangeVarTestFile_out.IN
Questo sembra funzionare bene, quindi immagino che devo aver commesso un errore di grammatica o utilizzando il sistema o eval, ma non riesco a vederlo.
Che cosa sta causando questo messaggio di errore? Perché non vedo la mia uscita prevista?
Se hai intenzione di votare questa domanda, posso chiederti di lasciare un commento. Sono sinceramente all'oscuro di ciò che ho fatto di sbagliato. –
Questa non sembra una domanda di programmazione, anche se non conosco gli strumenti. Quest'ultima parte è l'unica ragione per cui non ho votato per nulla o votato per chiudere come off-topic. –
Octave esegue effettivamente la sostituzione '$ {...}' nelle stringhe allo stesso modo di bash, ma anche all'interno di stringhe con quotatura singola? In caso contrario, non invierai mai la stessa cosa a "sed", invierai spazzatura che probabilmente prende solo le stringhe letterali. Quindi quello che finisci per cercare di valutare è spazzatura. – abarnert