关于bash:如何使用sqlplus查询的输出提示用户输入更多信息

How to use output of SqlPlus query to prompt user for more input

本问题已经有最佳答案,请猛点这里访问。

我正在写一个脚本:

  • 提示您输入名称
  • sqlplus数据库中的select count是否存在
  • 最终用户查看查询结果并提示询问用户是否要运行Statement2
  • 如果您选择"是",那么将运行Statement2。如果没有脚本被杀死
  • 我遇到的问题是,在运行第一个查询以检查它是否存在之后,我不确定如何添加提示,询问是否要插入数据库

    以下是迄今为止我的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    echo"Please enter last name: 'input;"
    read input

    statement1="select count(*) as count from users
    where fname = '"
    $input"'"

    statement2="INSERT INTO users VALUES ('"$input"');
    $ORACLE_HOME********************************
        $statement1
        /
        quit;
    Eossql

    我无法理解的部分是,在执行语句1之后,我希望系统询问是否应该执行语句2。有什么建议吗?

    谢谢!

    编辑:这是我编辑的代码,感谢cdahn的建议。这个解决方案是可行的,但我想知道是否有一种更清洁的方法来实现这一点,而不是两次连接到sqlplus。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    echo"Please enter last name: 'input;"
    read input
    Statement2="INSERT INTO users VALUES ('"$input"');"
    output1=$($sqlplus -s User/Pass@connection <<EOF
    set head off
    select count (*) from users
    where fname = '$input';
    EXIT;
    EOF

    )

    read -p"User $input appears $output1 times. Create user? [Y/n]" answer
    if [ -z"$answer" -o"$answer" =="y" -o"$answer" =="Y" ]
    then

    $sqlplus -s User/Pass@connection << Eossql
    set autocommit on
    set head off
    $Statement2
        quit;
    Eossql


    else
        echo"Not creating user"
    fi


    您需要添加对sqlplus的调用,以获得所编写查询的输出。请看这个问题以获得帮助。

    一旦你有了输出,你就可以使用一个条件,就像拉曼赛洛帕尔建议的那样。类似:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    output1="`sqlplus $statement1`"

    read -p"User $input appears $output1 times. Create user? [Y/n]" answer
    if [ -z"$answer" -o"$answer" =="y" -o"$answer" =="Y" ]
    then
        sqlplus $statement2
    else
        echo"Not creating user."
    fi