UNIX巧妙實現動態路徑
使用以下指令碼可以避免程式使用絕對路徑,增強程式的可移植性和可用性。
該方法靈感來自於Oracle的oui,並加以改良增加其通用性。
該文件包含shell和perl的程式碼,其他程式碼省略。
#/***************************/
#Oracle OUI的解決方法(很佩服啊)
#1.首先獲得$0執行程式的相對路徑(dirname命令實現);
#2.判斷是否當前目錄“.”,是執行pwd命令獲得目錄絕對路徑;
#3.不是當前目錄的用pwd命令獲得當前目錄,然後加上相對目錄組成全路徑。
#/***************************/
CMDDIR=`dirname $0`
if [ "$CMDDIR" = "." ]; then
CMDDIR=`pwd`;
fi
# Replace relative path with fully qualified path.
if [ ! "`echo $CMDDIR|grep '^/'`" ]; then
CMDDIR=`pwd`/$CMDDIR;
fi
#/***吾改進之,避免出現..目錄***/
cd $CMDDIR
CMDDIR=`pwd`
#/***************************/
#借鑑oracle OUI perl的解決方法。
#/***************************/
#!/usr/bin/perl
use Cwd;
use File::Basename;
my $cwd;
if ($0 =~ m{^/}) {
$cwd = dirname($0);
} else {
my $dir = getcwd();
$cwd = dirname("$dir/$0");
}
chdir($cwd);
my $cwddir = getcwd();
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13605188/viewspace-616012/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- svg實現路徑自己動態繪製的功能SVG
- FastHook——巧妙利用動態代理實現非侵入式AOPASTHook
- UNIX下C++實現動態載入物件C++物件
- 關鍵路徑JS實現JS
- canvas 實現光線沿不規則路徑運動Canvas
- 動態團隊管理—實現企業敏捷化的捷徑 (轉)敏捷
- 自己動手實現一個Unix Shell
- 為.Net專案新增動態庫載入路徑
- 巧妙地實現 debugOnly 函式Go函式
- spring boot 配置靜態路徑(404出現的坑)Spring Boot
- Kettle實現動態SQLSQL
- 動態棧的實現
- 巧妙方法教你實現多種main()AI
- Linux下動態共享庫 連線和載入路徑Linux
- 動態規劃求解矩陣累計和最大的路徑動態規劃矩陣
- nodejs ejs 請求路徑和靜態資原始檔路徑NodeJS
- “無法找到網路路徑”無法實現資源共享
- Feign實現動態URL
- Avalonia 實現動態托盤
- Nginx 動態 upstreams 實現Nginx
- 手動實現ArrayList動態陣列陣列
- Android 動態代理以及利用動態代理實現 ServiceHookAndroidHook
- 動態規劃如何輸出路徑?動態規劃
- 應用內路徑規劃的簡單實現
- spring aop實現許可權控制,路徑控制Spring
- 數字自然資源領域的實現路徑
- GitLab 實現動態 Environment URLGitlab
- vue 實現動態拓撲圖Vue
- 實現動態大數結構
- HTML+CSS實現動態相簿HTMLCSS
- Flask SocketIO 實現動態繪圖Flask繪圖
- Laravel 動態屬性的實現Laravel
- SVG實現動態模糊動畫效果SVG動畫
- SVG 實現動態模糊動畫效果SVG動畫
- javascript實現動態側邊欄JavaScript
- Ruby如何實現動態方法呼叫
- 業界新突破 | 揭示自動化篩選關鍵告警實現路徑之一
- Mac dylib動態庫載入路徑問題(以OpenCV為例)MacOpenCV