読み取りコマンドに制限がありますか?

読み取りコマンドに制限がありますか?

バックアップコード(多数)をファイルに保存できる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使用できる代替案はありますか?

答え1

コマンド自体に制限はありませんread。ただし、端末の単一ラインへの入力数に制限があります。これを確認するには、コマンドを実行してwc -c長い行を入力してください。同じ制限である4096バイトに達します。

制限を超えて入力するには、コードが複数行、各行が十分に短くなるように並べ替えるか、端末から直接読み取るのではなく、別の方法で入力できます。調理モード

readline が有効な場合、bash は文字を 1 つずつ読み込み、使用可能なメモリを除いて行の長さに制限はありません。

read -e -p "Backup code:" backupcode

しかし、端末からこのような長い入力を読むことは非常に悪いユーザーインターフェースです。ユーザーはそこに座って何千もの文字を入力しません。代わりに入力を読んでください。クリップボードからまたはファイルから。

関連情報