Cygwin - Сценарии Shell (оценка и эхо)

Нет, кэш не ограничен ничем как 1,7 ГБ. Это кажется, что у Вас есть много маленьких файлов на Вашей машине - если numvnodes полны, никакое дополнительное пространство не может использоваться для дискового кэша. Можно попытаться увеличить numvnodes еще больше, или можно попытаться искать/перерывать большой файл.

1
19.01.2014, 10:40
2 ответа
  1. Echo помещает новые строки между словами, потому что это разделяет вход в пробелах, не в новой строке.

  2. Это также, почему оценка не работает - она видит первое слово, содержа a ', и не видит конец строки, которая содержит закрытие '

Решение:

Измените значение IFS (Внутренний Разделитель полей) для не содержания пробелов или вкладок, но просто новых строк. Вы делаете это как это:

IFS=$'\n'

прежде чем Вы начнете читать в файле.

2
27.01.2020, 23:28

Не использовать 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
1
27.01.2020, 23:28
  • 1
    Если я изменяю A=0 на A=5, я ожидал к $A быть 6, но $A равняется 1. В =expr $A + 1, $A всегда 0. Почему? –  EggHead 19.01.2014, 17:11
  • 2
    @EggHead кажется на выполнение чего-то не так он хорошо работает здесь. Посмотрите обновление. –  terdon♦ 19.01.2014, 17:14
  • 3
    Да, я использовал эхо оценки "$line" вместо оценки "$line". Это работает теперь. Спасибо! –  EggHead 19.01.2014, 17:29

Теги

Похожие вопросы