Bash

讀取命令有限制嗎?

  • June 30, 2020

我正在嘗試編寫一個 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

但是,從終端讀取這麼長的輸入是一個非常糟糕的使用者界面。使用者不會坐在那裡輸入數千個字元。相反,從剪貼板或文件中讀取輸入。

引用自:https://unix.stackexchange.com/questions/595951