例如,我对以下行为感到困惑:
$ echo -e 'X=1\n# Comment\nY=2' > target
$ cat target
X=1
# Comment
Y=2
这不起作用
$ X='-' Y='-'; source <(cat target); echo $X $Y
- -
但这可行
$ X='-' Y='-'; source target; echo $X $Y
1 2
这可行:
$ cat <(cat target)
X=1
# Comment
Y=2
我知道我还有其他选择,以下对我有用:
$ X='-' Y='-'; source /dev/stdin <<< "$(cat target)"; echo $X $Y
1 2
(请注意,如果没有引号,我将得到不良的单行解析)
$ X='-' Y='-'; source /dev/stdin <<< $(cat target); echo $X $Y
1 -
这是在以下bash / osx上发生的事情:
$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
Copyright (C) 2007 Free Software Foundation, Inc.
$ uname -v
Darwin Kernel Version 17.7.0: Wed Apr 24 21:17:24 PDT 2019; root:xnu-4570.71.45~1/RELEASE_X86_64