這是一個縮寫版本的腳本,用於從裝有自動裝載器的EXB-8500讀取8毫米磁帶(一次最多隻有10個磁帶)。它以磁帶數據(直接二進制)形式存儲,並將其保存到以磁帶的4位數字(例如D1002.dat)命名的文件中,這些文件位於我們的主存儲器和備份中。在此期間,它正在記錄信息並在終端中顯示其狀態,以便我們可以看到它有多遠。0999:基準值太大(錯誤標記爲「0999」)
#!/bin/bash
echo "Please enter number of tapes: [int]"
read i
j=1
until [ $i -lt $j ]
do
echo "What is the number of tape $j ?"
read Tape_$j
((j += 1))
done
echo "Load tapes into the tower and press return when the drive is ready"
read a
j=1
until [ $i -lt $j ]
do
k="Tape_$j"
echo "tower1 $j D$(($k)) `date` Begin"
BEG=$j" "D$(($k))" "`date`" ""Begin"
echo "tower1 $j D$(($k)) `date` End"
END=$j" "D$(($k))" "`date`" ""End"
echo "$BEG $END"
echo "$BEG $END"
sleep 2
((j += 1))
done
echo "tower1 done"
一切都是h until直到我們不到1000(startig在0999)。錯誤代碼是./tower1: 0999: Value too great for base (error token is "0999")
。現在我已經意識到這是因爲腳本在輸入前導0時強制執行八進制值,並且我知道我應該在腳本的某個位置插入10#
,但問題在於:Where?
還有一種方法可以讓我將Tape_$j
定義爲一個字符串嗎?我覺得這樣可以清除很多這些問題
要得到錯誤,請運行腳本,然後定義所需的多個磁帶(至少一個,lol),並在磁帶名稱中插入前導0
例:
./test
Please enter number of tapes: [int]
1
What is the number of tape 1?
0999
./test: 0999: Value too great for base (error token is "0999")
我應該向腳本提供哪些輸入以獲取錯誤? – choroba
「0」前綴表示數字「9」不存在的八進制數。 – karakfa
@choroba:感謝您的快速回復,請檢查我的編輯是否有更新。 karakfa:我知道。閱讀我的最後一段。 – SpaceCadet