gpt4 book ai didi

linux - shell脚本中for循环的迭代

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:58 24 4
gpt4 key购买 nike

我有一个使用 for 循环的简单脚本,我想在其中获取变量的值并将其分配给另一个命令并关闭屏幕。 脚本如下

#!/usr/bin/sh/
echo 'I am going to kill the screens now';
for j in $(seq 1 1 10)
do
i=$(grep -oP '.*?(?=\.)');
echo $i
screen -S $i -p 0 -X quit
done <file1.txt
echo 'exiting...'

文件1.txt

There are screens on:

4974.eth2 (Detached)
5105.eth11 (Detached)
4990.eth3 (Detached)
5006.eth5 (Detached)
5054.eth8 (Detached)
5070.eth9 (Detached)
5038.eth7 (Detached)
5022.eth6 (Detached)
8 Sockets in /var/run/screen/S-root.

所以在这里,我遍历 10 行并在句点 (.) 之前分配 i=whatever 的值。例如。 4974。然后将 4974 放在 screen 命令中并杀死它。这里的问题是,它一次读取并搜索所有行,在 i 的值中,它在屏幕上显示为 4974 5105 4990 5006 5054 5070 5038 5022命令,它显然找不到这样的屏幕 ID,也不会杀死任何屏幕。我如何迭代循环,以便一次获取一个 id ie.value of i=4974 并将其仅放置在屏幕命令中,以便它会杀死它..如果您正确理解我的问题,请告诉我。

最佳答案

与其遍历计数器,不如直接遍历你的结果:

set -f # disable globbing, so globs in grep's output aren't expanded
echo 'I am going to kill the screens now' >&2
for i in $(grep -oP '.*?(?=\.)'); do
echo "$i"
screen -S "$i" -p 0 -X quit
done <file1.txt
echo 'exiting...' >&2

关于linux - shell脚本中for循环的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com