整数をパラメータとして送信する方法

整数をパラメータとして送信する方法

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バージョンとテスト中の完全なコードを提供してください。

関連情報