使用 csh 将命令的结果存储到变量中

store a result of a command into a variable using csh

我试图将命令的结果存储到一个变量中,这样我就可以很好地显示它和一些文本,而不是让它在我的 csh 脚本中显示输出然后换行然后我的文本。

#! /bin/csh -f


if ("" == "-f" && $#argv == 1 ) then
    grep 'su root' /var/adm/messages.[0-9] | cut -c 21-250
    grep 'su root' /var/adm/messages
else if( $#argv >  0 ) then
    echo "Usage : [-f]"
else
  grep 'su root' /var/adm/messages.[0-9] /var/adm/messages | wc -l
  printf "failed su attempts between Nov 02 and Oct 28\n"
endif

脚本中的这个命令

  grep 'su root' /var/adm/messages.[0-9] /var/adm/messages | wc -l

当我 运行 它时给我 21,我想将 21 存储在一个变量中。

所以我可以只显示

的输出
21 failed su attempts between Nov 02 and Oct 28

而不是

21
failed su attempts between Nov 02 and Oct 28

或者如果有更简单的方法不涉及对它开放的变量。

您可以使用 set 和反引号 (``)。像

set count=`grep 'su root' /var/adm/messages.[0-9] /var/adm/messages | wc -l`
printf "$count failed su attempts between Nov 02 and Oct 28\n"

printf "%s failed su attempts between Nov 02 and Oct 28\n" "$count"

没有变量,如

printf "%s failed su attempts between Nov 02 and Oct 28\n" \
    `grep 'su root' /var/adm/messages.[0-9] /var/adm/messages | wc -l`