gpt4 book ai didi

Bash 循环和函数参数扩展

转载 作者:行者123 更新时间:2023-12-04 05:58:44 25 4
gpt4 key购买 nike

我在 bash 脚本中有一个微不足道的 for 循环,它不起作用,我看不出有什么问题。

#!/bin/bash
function deleteOut {

for index in {0..$1}
do
echo "/bin/rm -rf ./OUT/Message_${index}.log"
/bin/rm -rf ./OUT/Message_${index}.log
done
}

并使用

deleteOut 5



我期待一个循环
    /bin/rm -rf ./OUT/Message_0.log
/bin/rm -rf ./OUT/Message_1.log
/bin/rm -rf ./OUT/Message_2.log
/bin/rm -rf ./OUT/Message_3.log
/bin/rm -rf ./OUT/Message_4.log
/bin/rm -rf ./OUT/Message_5.log

相反,我得到了
/bin/rm -rf ./OUT/Message_{0..5}.log 

我已经解决了这个问题,而不是做这样的事情
find ./OUT -name "Message_*.log" | xargs /bin/rm 

但这不是重点。为什么我的第一种方法不起作用?

最佳答案

使用 eval或子 shell

括号扩展在变量扩展之前

 for index in $(eval "echo {0..$q}")
do
echo $index
done

关于Bash 循环和函数参数扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9189876/

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