Bash
讀取命令有限制嗎?
我正在嘗試編寫一個 bash 腳本,它可以讓我將備份程式碼(大量數字)保存在文件中。我已經完成了腳本,但它只能讓我保存 4096 位程式碼。
我試圖這樣做:
# Ask for backup code read -p "Backup code:" backupcode # Check backup code length l="${#backupcode}" m=4096 if (( l > m )); then echo -e "${RED}ERROR:${NC} Backup is too large! The limit is 4096 digits." else # Save backup code in the file echo $backupcode > "${path[$i]}" fi
我認為這沒有檢測到備份太大。所以,我認為讀命令有些東西。
如果 有限制
read
,我可以使用任何替代方案嗎?
read
命令本身沒有限制。但是,您可以在終端的單行上輸入多少內容是有限制的。要查看這一點,請嘗試執行命令wc -c
並輸入很長的一行。您將在 4096 字節處達到相同的限制。要輸入超過限制,要麼安排使程式碼多行,每行足夠短,要麼以其他方式輸入,而不是在熟模式下直接從終端讀取。
如果啟用 readline,bash 會一個一個地讀取字元,並且除了可用記憶體之外,對行長度沒有限制。
read -e -p "Backup code:" backupcode
但是,從終端讀取這麼長的輸入是一個非常糟糕的使用者界面。使用者不會坐在那裡輸入數千個字元。相反,從剪貼板或文件中讀取輸入。