私は以下の私の問題を特定する際にあなたの助けを必要とし、その[0-9]は、その後にそれを保存した場合、同時に入力値を確認しながらUnixのループ変数
私の意図は、ループへの値の入力でありますファイルはそのファイルの出力をソートします。
私の問題は、私がスクリプトを実行するたびに、値が1 2 3 4 5として保持されていることです。これは私が入力したものではありません。私は条件文の変数宣言に問題があると思うが、私はそれについての回避策を知らない。
#!/bin/bash -x
echo > save.txt
validnum='0-9'
for ((i=1;i<=5;i++))
do
read -p "Please enter number $i: " num_$i
if [[ ! $num_$i =~ [^$validnum$] ]] && [[ $num_$i == "" ]]
then
echo "Input numbers have been validated.."
echo $num_$i >> save.txt
else
echo "INVALID CHARACTERS IDENTIFIED.."
echo "Please review your Input Values"
exit 0
fi
done
echo "Sorting values.."
echo "Below are the sorted values"
echo `cat save.txt | sort -n`
ここでは、スクリプトを実行するたびに拡張バージョンがあります。
+ echo
+ validnum=0-9
+ ((i=1))
+ ((i<=5))
+ read -p 'Please enter number 1: ' num_1
Please enter number 1:
+ [[ ! 1 =~ [^0-9$] ]]
+ [[ ! 1 == '' ]]
+ echo 'Input numbers have been validated..'
Input numbers have been validated..
+ echo 1
+ ((i++))
+ ((i<=5))
+ read -p 'Please enter number 2: ' num_2
Please enter number 2:
+ [[ ! 2 =~ [^0-9$] ]]
+ [[ ! 2 == '' ]]
+ echo 'Input numbers have been validated..'
Input numbers have been validated..
+ echo 2
+ ((i++))
+ ((i<=5))
+ read -p 'Please enter number 3: ' num_3
Please enter number 3:
+ [[ ! 3 =~ [^0-9$] ]]
+ [[ ! 3 == '' ]]
+ echo 'Input numbers have been validated..'
Input numbers have been validated..
+ echo 3
+ ((i++))
+ ((i<=5))
+ read -p 'Please enter number 4: ' num_4
Please enter number 4:
+ [[ ! 4 =~ [^0-9$] ]]
+ [[ ! 4 == '' ]]
+ echo 'Input numbers have been validated..'
Input numbers have been validated..
+ echo 4
+ ((i++))
+ ((i<=5))
+ read -p 'Please enter number 5: ' num_5
Please enter number 5:
+ [[ ! 5 =~ [^0-9$] ]]
+ [[ ! 5 == '' ]]
+ echo 'Input numbers have been validated..'
Input numbers have been validated..
+ echo 5
+ ((i++))
+ ((i<=5))
+ echo 'Sorting values..'
Sorting values..
+ echo 'Below are the sorted values'
Below are the sorted values
++ cat save.txt
++ sort -n
+ echo 1 2 3 4 5
1 2 3 4 5
'num_ $ i'のように動的変数を定義することはできません。おそらく配列を使用するのが最適でしょう。 – fedorqui
または、動的変数をまったく使用しないでください。独自の変数としてnumを使用するだけです。このインスタンスでは動的変数の必要性が見えません。 –
動的変数を置き換えるための提案はありますか?配列をまだ試していませんが、現在読んでいます。 –