gpt4 book ai didi

linux - 无法获取管道内设置的 shell 变量的准确值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:34 24 4
gpt4 key购买 nike

我正在尝试根据这样的 MySQL 语句的执行结果设置一个变量:

    errorOut=0
mysql -uroot -pinsite3 -rN --execute "select file_system_id from ifm.PartitionTable where physical_partition='$partName'" | while read myVal
do
echo "myVal = $myVal"
if [ $myVal -eq $fsId ];then
errorOut=1
echo "Found equal: errorOut = $errorOut"
fi
done
echo "Outside loop: errOut = $errorOut"


Here is the output:
myVal = 1
myVal = 2
Found equal: errorOut = 1
Outside loop: errOut = 0

如您所见,由于管道,我无法在循环外获取变量的值(因为管道内的变量,基本上设置为 fork 不同的进程)

有什么方法可以在循环外提取实际值吗?

最佳答案

如果像这样使用 for...in 而不是 read 会怎样? :

errorOut=0
for myVal in $(mysql -uroot -pinsite3 -rN --execute "select file_system_id from ifm.PartitionTable where physical_partition='$partName'")
do
echo "myVal = $myVal"
if [ $myVal -eq $fsId ];then
errorOut=1
echo "Found equal: errorOut = $errorOut"
fi
done
echo "Outside loop: errOut = $errorOut"

关于linux - 无法获取管道内设置的 shell 变量的准确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29823150/

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