macOS에서 루프가 작동하지 않음

macOS에서 루프가 작동하지 않음

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}

$1or 로 바꾸면 $number_of_jobs같은 일이 발생합니다 ."${number_of_jobs}"

답변1

귀하의 스크립트는 에 대해 작성되었지만 zsh을(를) 사용하고 있습니다 bash.

bash대괄호 확장에서 변수를 범위로 사용하는 것은 지원되지 않습니다.

이 문제를 해결하려면 셸에서 스크립트나 함수의 실행을 예약하세요 zsh(특히 스크립트가 표시된 것보다 길고 다른 zsh기능을 사용하는 경우). 기본적 으로 이 셸은 macOS에 /bin/zsh.#!/bin/zshzsh

또한보십시오:

답변2

여기서 문제는 중괄호 확장의 변수입니다.

다음과 같이 다시 작성해 보세요.

for ((i=1;i<=$1;i++))
do
  #your code here
done

관련 정보