[英]Bash script to execute a single command over multiple inputs one by one
我有一个基于 linux 的命令,名为x2goterminate-session
,后跟用户名,例如
x2goterminate-session john
但是我想在单个 go 中终止许多用户会话。
slpusrs=`x2golistsessions_root | grep '|S|' | cut -d "|" -f 2`
上面的变量slpusrs
找到睡眠用户的列表并将它们存储在 slpusrs 变量中。
现在我想在用户列表上一个一个地执行 x2goterminate-session 命令,这样所有休眠的用户都在一个 go 中终止,而不是一个一个地键入命令后面的用户。
command=x2goterminate-session
for i in "${slpusrs[@]}"; do
"$command" "$i"
done
但它不起作用。 请帮忙
slpusrs
是一个字符串,而不是一个数组。 利用
for i in $slpusrs; do
"$command" $i"
done
不要使用 Bash 进行迭代,而是使用xargs
为每个用户运行您的命令。
x2golistsessions_root |
grep '|S|' |
cut -d "|" -f 2 |
xargs -n1 x2goterminate-session
如果x2goterminate-session
realls 一次只能在一个用户上工作,你可以做一个
for user in $(x2golistsessions_root | grep '|S|' | cut -d "|" -f 2)
do
echo "Murdering unser $user ..."
x2goterminate-session "$user"
done
无需引入单独的变量,除非您稍后再次需要用户列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.