Нет, кэш не ограничен ничем как 1,7 ГБ. Это кажется, что у Вас есть много маленьких файлов на Вашей машине - если numvnodes полны, никакое дополнительное пространство не может использоваться для дискового кэша. Можно попытаться увеличить numvnodes еще больше, или можно попытаться искать/перерывать большой файл.
Echo помещает новые строки между словами, потому что это разделяет вход в пробелах, не в новой строке.
Это также, почему оценка не работает - она видит первое слово, содержа a '
, и не видит конец строки, которая содержит закрытие '
Измените значение IFS (Внутренний Разделитель полей) для не содержания пробелов или вкладок, но просто новых строк. Вы делаете это как это:
IFS=$'\n'
прежде чем Вы начнете читать в файле.
Не использовать for
циклы для этого. По умолчанию, как объяснено @JennyD, Ваша оболочка разделит на пробеле и не сохранит всю строку. Дело обстоит не так, если Вы read
файл в a while
цикл вместо cat
и for
:
$ while read line; do echo "$line"; done < f1.txt;
A=0
A=`expr $A + 1`
Это также сделает eval
выполнение правильно:
$ while read line; do eval "$line"; done < f1.txt; echo "A is $A"
A is 1
Так, например:
$ cat f1.txt
A=5
A=\`expr $A + 1\`
$ while read line; do eval "$line"; done < f1.txt; echo "A is $A"
A is 6
expr $A + 1
, $A всегда 0. Почему?
– EggHead
19.01.2014, 17:11