作者 主題: 請高手前輩們幫忙 linux shell 腳本  (閱讀 981 次)

0 會員 與 1 訪客 正在閱讀本文。

an04080412

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
請高手前輩們幫忙 linux shell 腳本
« 於: 2018-01-09 11:47 »
大家好,最近想寫一個linux shell 腳本,請高手前輩們幫忙,謝謝。

在A主機將oracle需要的結構目錄透過spool導出成一個文字檔後,這部分我已經完成。

將得到的文字檔內容,怎麼判斷寫另一個 shell 腳本在 B主機上mkdir相同的結構路徑。

1.導出的shell 腳本

#!/bin/sh
sqlplus -S / as sysdba <<EOF
 
set newpage none
set space 0
set pagesize 0
set heading off
set echo off
set termout off
set trimout on
set trimspool on
set linesize 2500
 
SPOOL /tmp/oraclelist.txt
 
select instance_name from v\$instance;
select display_value from v\$parameter where name ='spfile';
select name from v\$controlfile;
select name from v\$datafile;
select member from v\$logfile;
archive log list;
show parameter db_recovery_file_dest;
 
SPOOL OFF
exit;
EOF

2. 得到的文字檔案路徑的結果

/opt/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora

/opt/oracle/oradata/orcl/control01.ctl
/opt/oracle/flash_recovery_area/orcl/control02.ctl

/opt/oracle/oradata/orcl/system01.dbf
/opt/oracle/oradata/orcl/sysaux01.dbf
/opt/oracle/oradata/orcl/undotbs01.dbf
/opt/oracle/oradata/orcl/users01.dbf
/opt/oracle/oradata/orcl/example01.dbf
/opt/oracle/oradata/orcl/myspace.ora

/opt/oracle/oradata/orcl/redo03.log
/opt/oracle/oradata/orcl/redo02.log
/opt/oracle/oradata/orcl/redo01.log

/opt/oracle/flash_recovery_are

3. 將得到的文字檔內容,該怎麼判斷路徑寫另一個 shell 腳本
    在 B主機上mkdir相同的結構路徑,請高手們協助,謝謝。





« 上次編輯: 2018-01-09 11:49 由 an04080412 »

kojj

  • 懷疑的國中生
  • **
  • 文章數: 45
    • 檢視個人資料
Re: 請高手前輩們幫忙 linux shell 腳本
« 回覆 #1 於: 2018-01-10 14:49 »
我不確定你的詳細需求是什,不過Linux 上面有一個指令叫dirname,他可以幫你判斷與顯示完整路徑

dirname的用法你可以去google的到

順便參考一下別人寫的 shell script來寫code吧    ;)
https://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within

HaWay

  • 大隻佬!
  • 老人組
  • 俺是博士!
  • *****
  • 文章數: 3975
    • 檢視個人資料
Re: 請高手前輩們幫忙 linux shell 腳本
« 回覆 #2 於: 2018-01-10 16:29 »
乘上所言:
大致上像這樣
$ mkdir -p $(dirname /opt/oracle/oradata/orcl/system01.dbf)
我做人那麼 nice, 肯定有什麼誤會.....

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17372
    • 檢視個人資料
    • http://www.study-area.org
Re: 請高手前輩們幫忙 linux shell 腳本
« 回覆 #3 於: 2018-01-10 20:47 »
假設你將清單存在 dir_list.txt 好了:
for i in $(< dir_list.txt); do echo mkdir -p ${i%/*}; done
滿意後將 echo 拿掉即可...

注意:這裏沒有照顧到路經存在空白,或是檔案已經存在,或等等狀況...