나는 스크립트를 작업 중이며 사용자 입력을 받아 다음과 같은 카운터와 함께 정수 값으로 사용하고 싶습니다.
read -p "How many bytes would you like you replace :> " $numOfBytes
echo "$numOfBytes bytes to replace"
while [ $counter -le $numOfBytes ]
do
echo "testing counter value = $counter"
let $counter++
done
내 이해로는 numOfBytes 변수를 문자열로 사용하기 때문에 현재 작동하지 않습니다.
문자열을 int로 어떻게 변환해야합니까? 그런 식으로 할 수 있습니까? 대안이 있습니까?
정수를 읽은 다음 1에서 해당 정수로 루프를 수행하여 각 반복에서 숫자를 인쇄하려고합니다.
#!/bin/bash
read -p 'number please: ' num
for (( i = 1; i <= num; ++i )); do
printf 'counter is at %d\n' "$i"
done
어떻게 공지 $
값을 읽을 때 사용되지 않습니다. 함께 $var
사용하면 변수의 값을 얻을 수 var
있지만, read
요구는 알고 이름 변수가 값이 아닙니다으로 읽을 수 있습니다.
또는 while 루프를 사용하면
#!/bin/bash
read -p 'number please: ' num
i=0
while (( ++i <= num )); do
printf 'counter is at %d\n' "$i"
done
(( ... ))
에이 bash
연산 환경이다. 이러한 상황에서는 $
변수 를 입력 할 필요가 없으며 변수 값은 정수로 해석됩니다.
또는,와 /bin/sh
,
#!/bin/sh
printf 'number please: ' >&2
read num
i=1
while [ "$i" -le "$num" ]; do
printf 'counter is at %d\n' "$i"
i=$(( i + 1 ))
done
-le
( "이하보다 같거나") 테스트 요구 두번째 행동 인용 (코드)에서 가변 확장. 에서와 같이 따옴표가 [ $i -le $num ]
없는 경우 변수에 쉘 글 로빙 문자 나 공백이 포함되어 있으면 예기치 않은 결과 나 오류가 발생할 수 있습니다. 또한 따옴표는 IFS
변수에 숫자가 포함 된 경우 숫자를 보호합니다 .
관련 질문 :
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다