Существует 3 файла (a
, b
и c
), все с разрешениями 777
:
$ ls
a b c
Указанные выше файлы имеют следующее содержимое:
$ cat a
#!/bin/bash
export A=aaa
$ cat b
#!/bin/bash
source ./a
echo $A
$ cat c
#!/bin/bash
source ./a | >> log
echo $A
Единственная разница между b
и c
заключается в | >> log
:
$ diff b c
2c2
< source ./a
---
> source ./a | >> log
Когда выполняется b
, выдается ожидаемое aaa
:
$ ./b
aaa
При выполнении c
для меня выводится неожиданная пустая строка вместо ожидаемого aaa
, а файл log
, созданный сценарием c
, пуст:
$ ./c
$ cat log
$
Очевидно, что в source
и |
есть что-то, чему я еще не научился.
Может ли кто-нибудь объяснить мне, почему c
не выводит aaa
?