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