得到错误" cat:写错误:管道损坏"仅在非交互式运行bash脚本时

时间:2016-09-02 16:15:32

标签: linux bash broken-pipe

我写了一个bash脚本,我在其中定义了一个这样的变量:

var=$(cat $file_path | head -n $var2 | tail -n 1 | cut -f1)

其中$file_path只包含文件的路径,$var2是一个int,例如1或2.因此,变量被赋值为文件行号var2的第一个字段的值

当我从命令行运行它时,它完全正常。但是,在运行包含此命令的脚本时,我收到错误

  

cat:写入错误:管道损坏

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:4)

没有必要使用cat,因为head采用文件名参数。

var=$(head -n $var2 $file_path | tail -n 1 | cut -f1)

实际上,没有必要使用任何这些命令。

var=$(awk -v line=$var2 'NR == line { print $1; exit }' $file_path)