只有在以非交互方式运行bash脚本时才会出现错误“cat:write error:Broken pipe”

问题描述 投票:2回答:1

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

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

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

当我从命令行运行它时,它工作得很好。但是,在运行包含此命令的脚本时,我收到错误

cat:写错误:管道坏了

知道为什么会这样吗?

linux bash broken-pipe
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.