将命令的内容读入变量并抓住第一行

时间:2017-04-29 17:32:49

标签: bash

我正在尝试为我将其带入数组的服务器执行ps命令,并将该命令的输出转换为变量,然后再将内容的第一行转换为变量。请在下面找到我的代码。

#!/bin/bash
echo "enter the servers names..."
read -a array
for i in "${array[@]}"
do
content=`ps -auxwww | grep $i`
line=${head -1 content}
echo $line
done
exit 0

我无法从$content获取第一行。请帮助我们如何将第一行再次提取到变量中,然后完全显示第一行。我不想创建一个新文件来保存内容。我想一气呵成。

2 个答案:

答案 0 :(得分:1)

您可以直接从unix命令本身获取第1行

  

content =`ps -auxwww | grep $ i |头-1`

答案 1 :(得分:1)

你可以用这种方式一次性完成:

line=$(ps -auxwww | grep -- "$i" | head -1)
  • 最好使用$()而不是后退嘀嗒
  • 如果您的任何服务器名称以-- 开头,则
  • grep会阻止-失败
  • $i括在双引号中是很重要的,以防止由分词和通配引起的问题(您可以使用shellcheck在脚本中捕获此类问题)

如果你真的想分两步完成,那么:

content=$(ps -auxwww | grep -- "$i")
line=$(head -1 <<< "$content")

另见: