gpt4 book ai didi

bash - 从子 shell 中进行循环控制

转载 作者:行者123 更新时间:2023-11-29 09:14:43 25 4
gpt4 key购买 nike

我想使用子 shell 来确保环境变化不会影响循环中的不同迭代,但我不确定我是否可以使用循环控制语句(breakcontinue) 在子外壳中:

#!/bin/sh
export A=0
for i in 1 2 3; do
(
export A=$i
if [ $i -eq 2 ]; then continue ; fi
echo $i
)
done
echo $A

循环外的 A 的值不受循环内发生的任何事情的影响,这没关系。但是是否允许在子外壳内使用 continue 还是我应该将它移到外面?作为记录,它按照编写的方式工作,但也许这是一个不可靠的副作用。

最佳答案

只需添加

echo "out $i"

在右括号后看到它不起作用 - 它退出子 shell,但继续循环。

不过,以下是可行的:

#! /bin/bash
export A=0
for i in 1 2 3; do
(
export A=$i
if [ $i -eq 2 ]; then exit 1 ; fi
echo $i
) && echo $i out # Only if the condition was not true.
done
echo $A

关于bash - 从子 shell 中进行循环控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21431365/

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