Можем ли мы использовать переменные оболочки в awk?

Можем ли мы использовать переменные оболочки в AWK, как$VAR вместо$1, $2? Например:

UL=(AKHIL:AKHIL_NEW,SWATHI:SWATHI_NEW)

NUSR=`echo ${UL[*]}|awk -F, '{print NF}'`
echo $NUSR
echo ${UL[*]}|awk -F, '{print $NUSR}'

На самом деле я являюсь администратором базы данных, мы получаем много запросов на импорт. Я пытаюсь автоматизировать его с помощью сценария. Сценарий будет определять пользователей в дампе и запрашивать пользователей, которым необходимо загрузить дамп.

Предположим, у дампов есть два пользователяAKHIL, SWATHI (Там могут быть пользователи в дампе, и я хочу импортировать большее количество пользователей). Я хочу импортировать дампы новым пользователямAKHIL_NEW а такжеSWATHI_NEW, Таким образом, ввод для чтения некоторые думают какAKHIL:AKHIL_NEW,SWATHI:SWATHI_NEW.

Сначала мне нужно найти количество создаваемых пользователей, затем мне нужно получить новых пользователей, т.е.AKHIL_NEW,SWATHI_NEW от входа, который мы дали. Так что я могу подключиться к базе данных и создать новых пользователей, а затем импортировать. Я не копирую весь код: я просто скопировал код, откуда он принимает входные пользователи.

UL=(AKHIL:AKHIL_NEW,SWATHI:SWATHI_NEW) ## it can be many users like     USER1:USER1_NEW,USER2_USER2_NEW,USER3:USER_NEW..

NUSR=`echo ${UL[*]}|awk -F, '{print NF}'` #finding  number of fields or users
y=1
while [ $y -le $NUSR ] ; do
    USER=`echo ${UL[*]}|awk -F, -v NUSR=$y  '{print $NUSR}' |awk -F: '{print $2}'` #getting     Users to created AKHIL_NEW and SWATHI_NEW and passing to SQLPLUS
    if [[ $USER = SCPO* ]]; then
        TBS=SCPODATA
    else
        if [[ $USER = WWF* ]]; then
            TBS=WWFDATA
        else
            if [[ $USER = STSC* ]]; then
                TBS=SCPODATA
            else
                if [[ $USER = CSM* ]]; then
                    TBS=CSMDATA
                else
                    if [[ $USER = TMM* ]]; then
                        TBS=TMDATA
                    else
                        if [[ $USER = IGP* ]]; then
                        TBS=IGPDATA
                        fi
                    fi
                fi
             fi
        fi
    fi

    sqlplus -s '/ as sysdba'  <<EOF   # CREATING the USERS in the database 
    CREATE USER $USER IDENTIFIED BY $USER  DEFAULT TABLESPACE $TBS TEMPORARY TABLESPACE TEMP QUOTA 0K on SYSTEM QUOTA UNLIMITED ON $TBS;

    GRANT
    CONNECT,
       CREATE TABLE,
       CREATE VIEW,
       CREATE SYNONYM,
       CREATE SEQUENCE,
       CREATE DATABASE LINK,
       RESOURCE,
       SELECT_CATALOG_ROLE
    to $USER;
    EOF 
    y=`expr $y + 1`
done

impdp sysem/manager DIRECTORY=DATA_PUMP DUMPFILE=imp.dp logfile=impdp.log SCHEMAS=AKHIL,SWATHI REMPA_SCHEMA=${UL[*]} 

В последней команде impdp мне нужно получить исходных пользователей в дампах, т.е. AKHIL, SWATHI, используя переменные.

Ответы на вопрос(6)

Ваш ответ на вопрос