数値を最初の引数として使用し、個々の数値に対して数学を実行する必要があります。
以下のプログラムはすべての個々の数字を出力する必要があります。
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