Во-первых, не используйте обратные пометки, они устарели за «Новый язык программирования Kornshell», опубликованный в 1995 году!Вместо этого используйте простую в использовании версию подстановки команд: $( yourCmd goes here)
.
. Вы не показываете, как вы используете свою переменную $ MY_VAR.Если вы говорите
echo $MY_VAR > outputFile
Вам необходимо заключить переменную в кавычки, то есть
print -- "$MY_VAR" > outputFile
Print
- это ksh major-upgrade для эха, но лучше всего иметь привычкуиспользуя '-' между командой и строками, которые вы хотите print
.Любой символ '-' в строке, которую вы хотите напечатать, может бросить незащищенную (т.е. не '-') команду print
для цикла.
Возможно, вам также понадобится заключить в кавычки MY_VAR,то есть
MY_VAR="$(sqlplus -s usr/pass@db <<-EOD
set heading off;
set pagesize 0;
select a_value from a_table where an_index = 25;
EOD
)"
Я перешел на EOD, как!char используется многими оболочками для обозначений, таких как! $ (последнее слово предыдущей строки), так что зачем путать вещи.
Примечание на будущее: здесь есть тег для ksh, который вы можете использовать здесь в StackOverflow.Shell является неоднозначным, и может означать Windows cmd.com, а также zsh.
Надеюсь, это поможет.