我试图在bash脚本中读取stdin中的length
个字符,但我无法弄清楚如何将长度作为变量传递。
这是应该(tm)工作的脚本:
for i in {1..9}
do
read line
done
array=(${line})
length=${array[1]}
echo "$length" >> /home/ubuntu/test
read line
read -n $length line
echo "$line" >> /home/ubuntu/test
echo "done" >> /home/ubuntu/test
但是,当我cat /home/ubuntu/test
时,我看不到上次阅读的数据:
20558
done
但是,如果我将read -n $length line
替换为read -n 20558 line
,我会在文件中获得预期的数据。
如何将长度作为变量传递给read
?
修改
好的,我在length
中有一个尾随换行符。这有效:
read -n ${length:0:-1} line
答案 0 :(得分:0)
awk
救援!
awk 'NR==9{len=$2} NR==11{print substr($0,1,len); exit}'
根据您的脚本,第9行的第二个字段定义了从第11行读取的长度。