Почему это переменное присвоение не работает при использовании мишени?

Около того, что сказал Gilles:

Когда эти инструменты, где изобретенный HDD был очень маленьким, по сравнению с сегодня. Вы не нуждались в помощи для чтения числа как 400 000.

И если Вам не нравится он, используйте систему псевдонима. В Вашем корневом каталоге,

edit ~/.bashrc 

и вставьте, например:

alias df='df -h'
alias du='du -h'

Обратите внимание, что в отличие от многих других языков, Нельзя иметь пробел прежде или позади оператора присваивания (знак "равно").

0
11.04.2013, 19:19
1 ответ

Вы, вероятно, означали писать

FILE_NAME=`(cat somefile | head -1) | tee -a dump.txt`
echo $FILE_NAME

(или head -1 somefile избавиться от кошки)

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

Также сравните без переменного присвоения:

$ echo hello > somefile
$ `(cat somefile | head -1)` | tee -a dump.txt
bash: hello: command not found

Первая строка somefile не отражена к stdout, но интерпретирована как команда вместо этого. Так как команда не может быть выполнена, мишень не становится произведенной и действительно не выполняется ни один, поскольку нет никакого канала для создания.

3
28.01.2020, 02:28

Теги

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