テキストファイルに空白を入力

テキストファイルに空白を入力

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

おすすめ記事