如何发送整数作为参数

如何发送整数作为参数

我需要在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 版本和您正在测试的完整代码。

相关内容