숫자를 첫 번째 인수로 사용하고 개별 숫자에 대해 수학을 수행해야 합니다.
아래 프로그램은 모든 개별 숫자를 출력해야 합니다.
INPUT=$1
doMath() {
awk '{split('$INPUT',a,"");printf "'${@$INPUT}'"}'
}
doMath
명령으로 실행했는데 ./armstrong_numbers.sh 657823
오류가 발생했습니다.'{split('$INPUT',a,"");printf "'${@$INPUT}'"}': 잘못된 대체
답변1
bash
당신은 배열을 혼합했습니다 awk
.
귀하의 예제 명령은 그것을 $INPUT
다음과 같이 나눕니다.awk
배열 이름은 입니다 a
. 또한 대신
을 사용해야 합니다 . 그렇지 않으면 제공하지 않은 입력을 기다립니다.BEGIN{...}
{...}
awk
이 시도,
awk 'BEGIN{split('$INPUT',a,""); for (k in a) print a[k]; }'
또는 오타 문제를 피하기 위해 변수를 더 잘 설정하십시오 -v
.
awk -v "input=$INPUT" \
'BEGIN{split(input,a,""); for (k in a) print a[k]; }'
출력은 다음과 같습니다
6
5
7
8
2
3
아니면 그냥 모든 작업을 수행합니다 bash
.
for ((i=0;i<${#INPUT};i++)); do
echo ${INPUT:$i:1};
done