酷!學園
技術討論區 => Linux 討論版 => 主題作者是: an04080412 於 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相同的結構路徑,請高手們協助,謝謝。
-
我不確定你的詳細需求是什,不過Linux 上面有一個指令叫dirname,他可以幫你判斷與顯示完整路徑
dirname的用法你可以去google的到
順便參考一下別人寫的 shell script來寫code吧 ;)
https://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within
-
乘上所言:
大致上像這樣
$ mkdir -p $(dirname /opt/oracle/oradata/orcl/system01.dbf)
-
假設你將清單存在 dir_list.txt 好了:
for i in $(< dir_list.txt); do echo mkdir -p ${i%/*}; done
滿意後將 echo 拿掉即可...
注意:這裏沒有照顧到路經存在空白,或是檔案已經存在,或等等狀況...