如何在shell脚本中将命令输出到字符串

时间:2015-02-27 21:56:00

标签: shell

在我的脚本中我需要遍历文件中的行,一旦我找到一些特定的行我需要将它保存到变量以便稍后我可以在循环外使用它,我尝试了以下但它不会'工作:

count=0
res=""
python my.py -p 12345 |
  while IFS= read -r line
  do
     count=$((count+1))
     if [ "$count" -eq 5 ]; then
        res=`echo "$line" | xargs`
     fi
  done
echo "$res" 

它没有输出,我也试过了,

res=""

... in the loop...
   res=$res`echo "$line" | xargs`

仍然没有。请帮忙。感谢。

更新:感谢所有帮助。这是我的最终代码: RES = python my.py -p 12345 | sed -n '5p' | xargs

1 个答案:

答案 0 :(得分:1)

要查找文件中的特定行,您是否考虑过使用grep?

grep "thing I'm looking for" /path/to/my.file

这将输出与您要查找的内容相匹配的行。此外,这可以像你的问题一样通过管道输送到xargs。

如果您需要查看文件的特殊编号行,请考虑使用head和tail命令(也可以通过管道传递给grep)。

cat /path/to/my.file | head -n5 | tail -n1 | grep "thing I'm looking for"

这些命令采用指定的第一行(在本例中为5和1)并仅打印出来。希望这可以帮助您完成任务。

快乐的编码!如果您有任何问题,请发表评论。