gpt4 book ai didi

arrays - sh + 如何运行命令并将其设置为参数( VAL )

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:23 26 4
gpt4 key购买 nike

请看下面的命令,(shell是sh)

我不太清楚

当我运行 - eval echo\$arr$n 时,我得到了预期的值a

那么为什么: VAL=` eval echo\$arr$n `echo $VAL 不打印相同的值 a

在arr1中设置一个值

# n=1
# eval arr$n=a

打印 arr1 中的值

# n=1
# eval echo \$arr$n
a

eval echo\$arr$n 设置为 VAL ,并打印 $VAL

# VAL=` eval echo \$arr$n `
# echo $VAL
{*}1

命令中需要修复什么 - VAL=` eval echo\$arr$n ` ,所以当我执行 echo $VAL 时,我会得到值 a

最佳答案

使用 Bash 3.2(在 Mac OS X 10.9.4 上)作为 sh 运行进行测试:

sh-3.2$ n=1
sh-3.2$ eval arr$n=a
sh-3.2$ eval echo \$arr$n
a
sh-3.2$ VAL=`eval echo \$arr$n`
sh-3.2$ echo $VAL
1
sh-3.2$ VAL=$(eval echo \$arr$n)
sh-3.2$ echo $VAL
a
sh-3.2$ VAL=`eval echo \$arr$n`
sh-3.2$ echo $VAL
1
sh-3.2$ VAL=`eval echo \\$arr$n`
sh-3.2$ echo $VAL
a
sh-3.2$ arr=xyz
sh-3.2$ VAL=`eval echo \$arr$n`
sh-3.2$ echo $VAL
xyz1
sh-3.2$

请注意,使用反引号和 $(...) 之间存在差异。我推荐使用 $(…) 因为它更容易理解。如果您想坚持使用反引号,请将反斜杠加倍。 (我不太确定为什么它会这样,但这就是经验证据表明你需要做的。)

如果你想使用数组,就使用数组:

arr=('' a)
echo "${arr[1]}"

关于arrays - sh + 如何运行命令并将其设置为参数( VAL ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24557053/

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