バックアップコード(多数)をファイルに保存できる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
しかし、端末からこのような長い入力を読むことは非常に悪いユーザーインターフェースです。ユーザーはそこに座って何千もの文字を入力しません。代わりに入力を読んでください。クリップボードからまたはファイルから。