arrays - 在 for 循环中设置命令

标签 arrays linux bash for-loop set

我正在编写一个脚本,我将本地用户放在一个数组中并在 for 循环中使用它们,同时使用 set 进行解析以显示最后的命令信息。如果在脚本中单独运行,我可以仅使用“do”部分内的命令成功解析。

#!/bin/bash
#Automation Project (Khal)
#Author: Zacquille Joseph
#Version 1.2


#Get Users on System
user=$(getent passwd {1000..60000} | cut -d: -f1  )
#Puts all Users into Array
array=($user)

for item in ${array[*]}
do
set $(last | grep -w $item | head -n 1 )

echo
echo $*
echo "Name: $1"
echo "Date: $4 $5 $6"
echo "Time: $7"
echo "Status: $7 $8 $9 ${10}"
echo

done

我希望只有输出

mary pts/2 X.X.X.X Wed Apr 17 15:31 - 15:36 (00:04)
Name: mary
Date: Wed Apr 17
Time: 15:31
Status: 15:31 - 15:36 (00:04)


zac pts/0 X.X.X.X Tue Apr 30 14:10 still logged in
Name: zac
Date: Tue Apr 30
Time: 14:10
Status: 14:10 still logged in

相反,我将其与此结合:

BASH=/bin/bash
BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="./cst1.sh")
BASH_VERSINFO=([0]="4" [1]="4" [2]="19" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='4.4.19(1)-release'
DIRSTACK=()
EUID=1004
GROUPS=()
.....

仅供引用:

last | grep -w zac | head -n 1

将返回这个:

zac      pts/0        X.X.X.X  Tue Apr 30 14:10   still logged in

运行这个:

set $(last | head -n 10 | tail -n 1)

echo
echo $*
echo "Name: $1"
echo "Date: $4 $5 $6"
echo "Time: $7"
echo "Status: $7 $8 $9 ${10}"
echo

将返回:

ubuntu pts/4 X.X.X.X Thu Apr 18 22:47 - 01:01 (02:13)
Name: ubuntu
Date: Thu Apr 18
Time: 22:47
Status: 22:47 - 01:01 (02:13)

最佳答案

尝试使用另一个数组而不是 set 命令,例如:

arr2=($(last | grep -w $item | head -n 1 ))

echo
echo $*
echo "Name: ${arr2[0]} "
echo "Date: ${arr2[3]} ${arr2[4]}  ${arr2[5]} "
echo "Time:  ${arr2[6]}"
echo "Status: ${arr2[6]} ${arr2[7]}  ${arr2[8]}  ${arr2[9]}"
echo

关于arrays - 在 for 循环中设置命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55923487/

相关文章:

php - Bash 脚本不会在后台启动后执行命令

linux - 对 shell 中的一些标准输入或 heredoc 用法感到困惑

c# - 数组乘对

c - 针对比使用 libc 构建的更新的 linux 头文件构建

linux - 设备何时从文件系统获得 512B 请求?

LINUX AWK命令合并基因亚型

arrays - 循环遍历数组,将新值赋给数组中的变量

c++ - 我怎样才能随机化一个数组?

arrays - WordPress 插件设置类中的动态数组选项

字符数组打印比我指定的少 1 个字符