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
orに置き換えると$number_of_jobs
同じことが起こります。"${number_of_jobs}"
答え1
あなたのスクリプトはについて書かれていますが、それを使用していzsh
ますbash
。
bash
角かっこ拡張で変数をスコープとして使用することはサポートされていません。
この問題を解決するには、シェルでスクリプトまたは関数の実行をスケジュールしますzsh
(特に、スクリプトが表示されているものより長く、他のzsh
機能を使用している場合)。デフォルトでは、このシェルはmacOSに/bin/zsh
。#!/bin/zsh
zsh
また見なさい:
答え2
ここでの問題は中括弧拡張の変数です。
次のように書き直してください。
for ((i=1;i<=$1;i++))
do
#your code here
done