我写了一个bash脚本,我在其中定义了一个这样的变量:
var=$(cat $file_path | head -n $var2 | tail -n 1 | cut -f1)
其中$file_path
只包含文件的路径,$var2
是一个int,例如1或2.因此,变量被赋值为文件行号var2的第一个字段的值
当我从命令行运行它时,它完全正常。但是,在运行包含此命令的脚本时,我收到错误
cat:写入错误:管道损坏
知道为什么会这样吗?
答案 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)