Error- test: argument expected

check_build_info_table()
{
        if [ $DB_SYSTEM = "ORACLE" ]
    then
        export build_info_table=`sqlplus -s sna/dbmanager <<!
        set pagesize 0 heading off feedback off
        SELECT DISTINCT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'XYZ' AND TABLE_NAME = 'MY_TABLE';
        exit
        !`        
    elif [ $DB_SYSTEM = "MYSQL" ]
    then
            export  build_info_table=$(db_query.pl " select distinct TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='XYZ' and TABLE_NAME='MY_TABLE';")
        echo "test1"
        echo"$build_info_table"
        fi

        if [ -z "$build_info_table"]
        then
          echo "test2"
          if [ $DB_SYSTEM = "ORACLE" ]
          then
              sqlplus -s xyz/mypassword <<!
              CREATE TABLE MY_TABLE(RELEASEID VARCHAR(15) NOT NULL,COMPONENT VARCHAR(10) NOT NULL,BUILD VARCHAR(20) NOT NULL,BUILD_TIME   VARCHAR(20) NOT NULL,INSTALL_TIME VARCHAR(20) NOT NULL);

              INSERT INTO XYZ.MY_TABLE(COMPONENT,BUILD,BUILD_TIME,INSTALL_TIME) VALUES ('SNA',EMLR9501_136A,now(),now());

          commit;    
          exit
!
          elif [ $DB_SYSTEM = "MYSQL" ]
          then
          mysql --user=${OSMDB_USR} --password=${OSMDB_PWD} ${DB_NAME} <<!
              SET storage_engine=INNODB;

          CREATE TABLE MY_TABLE(RELEASEID VARCHAR(15) NOT NULL,COMPONENT VARCHAR(10) NOT NULL,BUILD VARCHAR(20) NOT NULL,BUILD_TIME   VARCHAR(20) NOT NULL,INSTALL_TIME VARCHAR(20) NOT NULL);

              INSERT INTO SNA.MY_TABLE(COMPONENT,BUILD,BUILD_TIME,INSTALL_TIME) VALUES ('SNA',EMLR9501_136A,now(),now());

          commit;
          exit
!
              fi
fi
}

Script Output

The DB is MYSQL
test1

check_build_info_table: test: argument expected
DBD::mysql::st execute failed:

Try giving a space between " and ] if [ -z "$build_info_table" ]

1 Like

Woo woo wow!! it worked.

Thanks a ton!

Can you please explain how this has make a difference....

That's actually the syntax of if command. There must be a space surrounding [ and ]

1 Like