Linux

為 shell 腳本中的各種變數執行命令

  • September 9, 2018

因此,我將從 sql 查詢返回的第一列的值儲存在變數(var)中。它應該是數組類型,因為 sql 查詢返回多行,稍後,這些值將用於命令。

我不確定如何在 shell 腳本中使用不同的變數一個接一個地執行相同的命令。

var=`app/oracle/product/10.2.0/bin/sqlplus -s user/passwd<< !EOF!
 set pages 0 echo off feed off timing off
select entity_name,uid,set_date from table_name;
exit
    !EOF!`

要執行的命令如下所示:

X=$var Y=`date` ./test.sh

您不需要將數據庫查詢的輸出儲存在一個變數中。

app/oracle/product/10.2.0/bin/sqlplus -s user/passwd <<END_SQL | while IFS= read -r thing; do X="$thing" Y="$(date)" ./test.sh; done
set pages 0 echo off feed off timing off
select entity_name,uid,set_date from table_name;
exit
END_SQL

這將讀取sqlplus命令的輸出並為每一行呼叫一次腳本,設置環境變數的值XY在過程中。

你的要求不清楚。您可以修改腳本嗎?如果不是,並且它顯式地依賴於XandY變數,那麼您將需要一個 temp / loop 變數。要test.sh為每個數組元素執行,請嘗試for循環(除非任何元素中有空格字元):

for TMP in "${var[@]}"; do X="$TMP" Y=$(date) ./test.sh; done

引用自:https://unix.stackexchange.com/questions/466357