Передача параметра, полученного из сценария оболочки, в запрос db2 внутри того же сценария оболочки - PullRequest
0 голосов
/ 25 октября 2019

Я пишу сценарий оболочки, который принимает имя таблицы параметров. Внутри того же сценария оболочки у меня есть запрос db2 - «Select * from table_name». Я хочу предоставить имя таблицы для запроса db2, который я получил из параметра сценария оболочки. Как мне этого добиться.

Мой сценарий до сих пор -

    echo "Content Display"
        while [ -n "$1" ]; do
          case "$1" in
          -f) echo "File mode has selected" ;;
          --)
          shift
          break
          ;;
    esac
    shift
    done
    param = "$1"
    db2 "select * from 'param'"

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Вот пример сценария оболочки, основанный на ваших требованиях. Это проверено в AIX и Linux.

  1. Сохраните ниже как prep.sh, запустите "chmod 777 prep.sh" и выполните его.
#!/bin/sh

# prepare objects for test
db2 -v "drop db db1"
db2 -v "create db db1"
db2 -v "connect to db1"
db2 -v "create table hotel (c1 char(20))"
db2 -v "insert into hotel values ('Nice hotel')"
db2 -v "insert into hotel values ('Good hotel')"
db2 -v "insert into hotel values ('Fancy hotel')"
db2 -v "terminate"
Сохраните ниже как get.sh и запустите "chmod 777 get.sh".
#!/bin/sh

if [ -z "$1" ] ; then
  echo "no table name"
  exit
else
  tabname=$1
fi

db2 -v "connect to db1"
db2 -v "select * from $tabname"
db2 -v "terminate"
Выполните get.sh, как показано ниже:

. / Get.sh hotel

Примечание: Соединяет базу данных db1 ,выберите таблицу hotel и затем верните три строки , как показано ниже:

C1
--------------------
Nice hotel
Good hotel
Fancy hotel

  3 record(s) selected.

Надеюсь, это поможет.

1 голос
/ 26 октября 2019

Чтобы раскрыть переменную в строке в двойных кавычках, просто поставьте $ перед именем переменной:

param="world"
echo "Hello $param"

В вашем случае:

param="$1"
db2 "select * from $param"

Если выкогда-либо нужно устранить неоднозначность, вы можете использовать ${}:

param="29"
echo "It is $paramC outside"  # Wrong, accesses $paramC
echo "It is ${param}C outside # Right, accesses $param and appends the letter C
...