我一直在編碼bash腳本通過讀取命令,以接受一系列的大寫字母,一次一個的輸入。輸入以0結尾。在所有有效輸入字母和有效輸入字母總數中查找並顯示按字母順序排列的第一個字母。如何找到從輸入字母表中的第一個字母和計數輸入字母
如果我,例如,d,G,T,W,Q,3,B,1,d,S,0的輸入,預期的輸出是:
「3是一個無效的輸入」
‘1是一個無效的輸入’ ‘在所有輸入拼音的第一個字母是B’
‘你輸入8個有效的字母。’
下面是我的一些代碼,並請讓我知道我得解決
#!/bin/bash
IV=()
loop=-1
c=Z
ac=0
while [ $loop -gt 0] || [ $loop -t 0]
do
echo "Enter an uppercase Alphabet"
read b
if [[ $b = [A-Z] ]]
then
ac=`expr $ac +1`
if [ $b \< $c ]
then
c=$b
fi
elif [ $b = "0" ]
then
loop=`expr $loop +1`
for i in "${IV[@]}"
do
echo $i "is an invalid input"
done
echo "The first letter in Alphabetical order of all input is" $c
echo "You have entered" $ac "valid letters."
else
IV[@]=$b
fi
done
所以,我的問題是,如果我輸入無效的字符串或整型,輸出類似 「IV [@]:壞數組下標」
什麼是你正面臨着與發佈代碼的問題?什麼不適合你?您是否在尋找評論?那麼也許更擅長https://codereview.stackexchange.com/ 適合了作爲一個開始,家當更改爲'#!/斌/慶典-x'並期待在輸出... –
爲該啊對不起。我的問題是,如果我輸入無效的字符串或整型,輸出是像「IV [@]:壞數組下標」 –
那是因爲你不能做'IV [@] = $ B'。 '@'說明符允許您列出所有元素,但不能像您所擁有的那樣將它用作賦值的「左值」。爲什麼'ac ='expr $ ac + 1'?一個簡單的((aC++))就是需要的。 'expr'可以工作,但* * * *。什麼是'[$ b \ <$ c]'?你有沒有通過[** ShellCheck.net **](http://www.shellcheck.net/)運行你的代碼? –