我有一个只包含一行的输入文件:
$ cat input
foo bar
line=$(cat input)
line=$(<input)
IFS= read -r line < input
例如,使用命令替换意味着生成一个子shell,而使用
read
我没有,对吧?还有什么其他的区别,而且有一种方式比其他方式更受欢迎?我也注意到
strace
)仅此而已
阅读
openat
不知为什么。其他人怎么可能不呢?
$ strace ./script |& grep input
read(3, "#!/usr/bin/env bash\n\ncat > input"..., 80) = 80
read(255, "#!/usr/bin/env bash\n\ncat > input"..., 167) = 167
read(255, "\nline=$(cat input)\nline=$(<input"..., 167) = 60
read(255, "line=$(<input)\nIFS= read -r line"..., 167) = 41
read(255, "IFS= read -r line < input\n", 167) = 26
openat(AT_FDCWD, "input", O_RDONLY) = 3