gpt4 book ai didi

bash - shell脚本中的 "for i"和 "for i in 1 2 3 4"有什么区别?

转载 作者:行者123 更新时间:2023-12-04 18:35:36 25 4
gpt4 key购买 nike

我必须在不同的行上打印在 shell 脚本中解析的所有参数。我写了一个脚本

for i in 1 2 3 4 5
do
echo $i
done

但这打印
1
2
3
4
5

即使我将参数解析为“10 20 30 40 50”

和互联网上的一个代码
for i
do
echo $i
done

此代码正确打印参数。

有人可以解释一下为什么该代码有效但我的无效吗?

另外,如何使用一个变量 ($i) 的值作为变量名来打印其他内容。喜欢
i=1
$($i)

应该打印 $1 的值。

最佳答案

for i相当于for i in "$@"来自 Bash help for :

for: for NAME [in WORDS ... ] ; do COMMANDS; done
Execute commands for each member in a list.

The 'for' loop executes a sequence of commands for each member in a
list of items. If 'in WORDS ...;' is not present, then 'in "$@"' is
assumed. For each element in WORDS, NAME is set to that element, and
the COMMANDS are executed.


If in WORDS ...; is not present, then in "$@" is assumed


如果要从变量中获取变量,请使用间接扩展:
set -- arg1 arg2 arg3 foo
for i in 3 4 1 2
do
echo "${!i}"
done
# Output: arg3 foo arg2 arg1

关于bash - shell脚本中的 "for i"和 "for i in 1 2 3 4"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52418326/

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