2013-10-01 2 views
3

Я пытаюсь сохранить свою IFS перед ее модификацией в скрипте KornShell (ksh). Я обнаружил, что резервная копия не была сохранена должным образом, поэтому я написал простой скрипт для воспроизведения проблемы.Как правильно сохранить IFS в KornShell (ksh)

#!/usr/bin/ksh 

OFIS=$IFS 
echo "$IFS" | od -b 
echo "$OIFS" | od -b 

То, что я ожидал увидеть, когда я эхо OIFS это то же самое, когда я эхо IFS, которая восьмеричные значения ASCii для пространства (040), вкладка (011) и перевода строки (012) , Тем не менее, это выход:

0000000 040 011 012 012 
0000004 
0000000 012 
0000001 

Обратите внимание, что выходной переменной IFS содержит все три символа, в то время как выход OIFS только содержит символ новой строки (012). Каждый форум, на который я смотрел, показал, что это способ создать копию IFS. Кто-нибудь знает, почему OIFS не устанавливается правильно? Я также попытался ограждающими $ IFS в двойных кавычках, как это так, но получил те же результаты:

#!/usr/bin/ksh 

OFIS="$IFS" 
echo "$IFS" | od -b 
echo "$OIFS" | od -b 
0000000 040 011 012 012 
0000004 
0000000 012 
0000001 

Я бег на AIX6.

+1

Вы собираетесь пинать себя: 'OFIS'! =' OIFS' –

+1

Хотелось бы, чтобы я был достаточно гибким, чтобы ударить себя в голову, но я полагаю, что его ударить по стене придется. Спасибо :) – user2680121

+0

+1 для легко переваренного тестового чехла. Жаль, что опечатка ;-) Удачи всем. – shellter

ответ

1

Кавычки не строго необходимы для присвоения:

foo=" lots of spaces " 
bar=$foo 
echo ">$bar<" 
> lots of spaces < 

Конечно, котировки, как правило, требуется, когда вы использование переменной.

Смежные вопросы