Я пытаюсь сохранить свою 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.
Вы собираетесь пинать себя: 'OFIS'! =' OIFS' –
Хотелось бы, чтобы я был достаточно гибким, чтобы ударить себя в голову, но я полагаю, что его ударить по стене придется. Спасибо :) – user2680121
+1 для легко переваренного тестового чехла. Жаль, что опечатка ;-) Удачи всем. – shellter