MacOS端末で次のシェルスクリプトを実行する必要があります。ループは、最初の反復よりも多く実行されることはありません。
function execute_function() {
# Launch job
number_of_jobs=$1
echo "Launching ${number_of_jobs} jobs"
for i in {1..$1}; do
job_id=`head /dev/urandom | tr -dc A-Z0-9 | head -c 6 ; echo ''`
echo "Launching Job: $job_id"
echo $i
done
}
私がそれを実行するとき、私はいつも得ます:
execute_function 10
Launching 10 jobs
Launching Job: XX9BWC
{1..10}
私が置き換えた場合も同じことが起こります:$1
と$number_of_jobs
または"${number_of_jobs}"
ここでの問題は、中括弧の展開によって異なります。
それを書き直してみてください
for ((i=1;i<=$1;i++))
do
#your code here
done
スクリプトはzsh
用に作成されていますが、bash
を使用して実行しています。
bash
は、ブレース展開での範囲としての変数の使用をサポートしていません。
これを解決するには、スクリプトまたは関数がzsh
シェルで実行されるように調整します(特に、スクリプトが表示されているものより長く、他のzsh
機能を使用している場合)。このシェルは、macOSにデフォルトで/bin/zsh
としてインストールされます。スクリプトの最初の行に#!/bin/zsh
を追加して、デフォルトでzsh
で実行することができます。
以下も参照してください。