LinuxとOracleでユーザーを生成するスクリプトがあります。複数のユーザーを作成する場合は、次のコマンドを使用します。
cat /path/path/file.txt | while read USER PASS ORAUSER ROLE
do
しかし、残念ながら、その役割を空白にして、ユーザーアクセスに深刻な問題が発生しました。テキストに空の変数があるかどうかを確認する方法を知りたいです。
答え1
変数が空であることを確認するには:
# bash
if [[ -z $var ]]; then
echo var is empty
fi
# POSIX sh
if [ -z "$var" ]; then
echo var is empty
fi
printf %s\\n "${var:-var is unset or null}"
: "${var:=default value for var}"
それでも、入力ファイル内のフィールドが欠落しているか誤ってソートされる問題は解決されません。ORAUSER
フィールドが欠落している場合、変数ORAUSER
にフィールド値が割り当てられますROLE
。フィールドが多すぎると、最後の変数はROLE
すべての追加フィールドを取得します。空のフィールドが明確に区切られるように、空白ではなく区切り文字を使用するようにテキストファイル形式を切り替えることをお勧めします。たとえば、/etc/passwd
コロン(:
)を使用します。
まだ読んでいない場合はお読みください。バッシュFAQ 1特に、シェルスクリプトでテキストファイルを1行ずつ/フィールドで正しく解析することに関する集中的な知恵bash
。