gpt4 book ai didi

linux - 如何访问在大括号外的大括号中定义的变量值?

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

我有有效的 shell(不是 bash)代码,它将字符串拆分为 varialbes:

sh """
version='1.2.3.4'

echo \$version | { IFS=. read a b c d; echo \$a; }

echo \"a\" \$a
"""

这是输出:

+ version=1.2.3.4
+ IFS=. read a b c d
+ echo 1.2.3.4
+ echo 1
1
+ echo a
a

问题:

我无法在大括号外访问 a,b,c,d 的值

问题:

如何访问这些变量?


更新:

我通过 jenkins pipeline 运行这段代码,这让我可以使用这种方法。如果我尝试使用另一个,它只会忽略解析字符串的尝试:

stage('test') {
steps {
sh """
version='1.2.3.4'

IFS=. read a b c d <<EOF
\$version
EOF

echo \"a\" \$a
"""
}
}

输出:

[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (test)
[Pipeline] sh
[ScpPipeline] Running shell script
+ version=1.2.3.4
+ IFS=. read a b c d
[Pipeline] }

UPD_1:

问题出在空格和制表符中...... 0_o 所以这是工作变体(但丑陋):

stage('test') {
steps {
sh """
version='1.2.3.4'

IFS=. read a b c d <<EOF
\$version
EOF

echo \"a\" \$a \"b\" \$b \"c\" \$c \"d\" \$d
"""
}
}

最佳答案

使用此处文档而不是管道。

sh """
version='1.2.3.4'

IFS=. read a b c d <<EOF
\$version
EOF

echo \"a\" \$a
"""

关于linux - 如何访问在大括号外的大括号中定义的变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48193765/

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