我需要在Linux下写一个脚本。我想在每次迭代中使用不同的参数多次执行一个函数。
我编写以下代码:
#!/bin/bash
bash << _EOF_
for ((i=0; i<=20;i++));do
MYFUNCTION -X
done
_EOF_
其中 -X 必须是整数。我尝试$i
改为写入,但没有成功。
答案1
失去特雷多克它应该工作得很好:
#!/bin/bash
for ((i=0; i<=20;i++));do
MYFUNCTION "-$i"
done
或者,您可以使用单引号定界符,这将$i
防止从未设置的外部上下文中插入:
#!/bin/bash
bash << '_EOF_'
for ((i=0; i<=20;i++));do
MYFUNCTION "-$i"
done
_EOF_
但几乎没有充分的理由从新启动的 bash 进程开始另一个 bash。
答案2
没有理由在这种情况下使用heredoc。
下面的代码在 bash 版本 4.2.26 上运行得很好:
#!/bin/bash
function f()
{
echo $1;
};
for i in {1..20}; # This works for a range of integers, but for unrelated values, you can use "i in x y z" format
do
f $i;
done;
如果您仍然遇到问题,请提供 bash 版本和您正在测试的完整代码。