1. 程式人生 > >shell腳本里面相互呼叫時路徑不要用pwd獲取

shell腳本里面相互呼叫時路徑不要用pwd獲取

shellA呼叫shellB,如果shellB 裡面需要使用路徑作為變數,去尋找其它檔案。那麼要注意,不用pwd,其返回的是系統中使用者當前所在位置的路徑,也就是shellA的路徑,這樣就錯了。應該用dirname $0,找出當前執行檔案的路勁。

場景:

指令碼 observerReport.sh 裡面呼叫 mergerReport.sh,observerReport.sh在script/目錄, mergerReport.sh在下一級子目錄script/merge裡,

此時,如果mergerReport.sh裡面用pwd生成路徑,並不會是 script/merge,而是當前指令碼的執行路徑,也就是script。

所以要用 dirname $0 返回正確路徑

相關推薦

shell相互呼叫路徑不要pwd獲取

shellA呼叫shellB,如果shellB 裡面需要使用路徑作為變數,去尋找其它檔案。那麼要注意,不用pwd,其返回的是系統中使用者當前所在位置的路徑,也就是shellA的路徑,這樣就錯了。應該用dirname $0,找出當前執行檔案的路勁。 場景: 指令碼 obse

shell通過正則匹配操作字串的問題

a=$( expr 'helloworld20140501.txt' : '.*\([0-9]\{8\}\).*' ) echo $a linux shell 中可以將命令的結果賦值給變數,$(命令)這種格式將返回命令執行後的結果字串 上面命令執行後,變數a的值是20140

學以致用二十三-----shell呼叫指令碼

當前指令碼可以呼叫其他目錄下的指令碼,並可以直接使用其他腳本里的函式。 首先檢視指令碼目錄 執行net_set.sh,同時執行colos.sh 並可直接使用 color.sh中的函式 net_set.sh 注意紅色方框和綠色方框部分 Echo_green為 color.sh的函式 程式碼

shell常見的指令和函式

[[email protected] ~]$ ./test.shenter y/n :donly accept Y,y,N,n,YES,yes,NO,no        enter y/n :y                                            =========

關於shell的單行註釋和多行註釋方法

以“#”開頭的行就是註釋,會被直譯器忽略。 sh裡沒有多行註釋,只能每一行加一個#號。只能像這樣: #-------------------------------------------- # 這是一個自動打ipa的指令碼,基於webfrogs的ipa-build書寫:

Shell常見的一些指令和函式

shell script可以執行cd指令改變當前目錄[[email protected] test]# vi test.sh cd /home touch go echo haha > go ls go cd /home/mac echo haha >

shell的\r字元。

在windows上用notepadd++編輯一個shell指令碼,死活出錯,回到linux下,編輯,還是有這個\r,搜尋了下,是這樣的: ‘ 由於在shell處理了windows裡的字元檔案,導致本該輸出成兩行的字串變成了一行,而第一行行首的一些字元被第二行覆

如何在shell傳遞一個變數給awk

awk有時是個糾結的東西,一方面它很容易就佔用了單引號和雙引號,如果你要在什麼腳本里面呼叫awk,很輕鬆地就要跟引號的轉義進行搏鬥; 另一方面,$1 $2 ... $NF $NR,它也毫不客氣的佔用了$族的地盤。 怎麼在shell腳本里面傳遞一個變數給awk呢? 特別是想

linux 把cd 命令寫在bash shell不起作用

寫shell指令碼時,發現把cd命令寫在裡面無法正確跳轉,還是在當前目錄下,其實檔案已經跳轉,不過subshell退出的時候又回到當前目錄了,解決方法: source yourshellname 其中,yourshellname就是你的shell指令碼的檔名

shell案例(一)批量創建

shell 批量創建用戶 for linux 案例需求用shell腳本批量建立Linux用戶實現要求:創建用戶student1到student50,指定組為student組!而且每個用戶需要設定一個不同的密碼! 實現腳本 #!/bin/bash grep ‘student‘ /etc/grou

perl 呼叫shell 以及獲取返回值

perl 腳本里呼叫shell 以及獲取返回值,如下: #!/usr/bin/perl $output = qx(/home/irdetogame/lucy/CMGC/processAPK.sh

最近感想+shell新建文件添加創建的註釋

網易雲 string 上班 amp 吸引 都是 2017年 現象 保持 離職了將近20天了,帶著女朋友回家見了下家長,過了個國慶節,5號返深。當時離職的原因是,對工作現狀不滿(工資待遇低,倒掛),對工作內容積極性不高(興趣不深、沒有成就感),導致這種現象的原因,我分析了下歸

shell 中 空格的註意問題:= 賦值兩邊不能有空格,而if比較判斷 = 兩邊必須加空格

花括號 判斷 建議 閱讀 i+1 字符 變量 中間 必須 shell腳本對空格有嚴格的規定,賦值語句等號兩邊不能有空格,而字符串比較,等號兩邊必須有空格 賦值時: i=1     i=$((i+1)) // =用作賦值時,兩邊絕對不

unity呼叫別的面的方法

第一種,被呼叫指令碼函式為static型別,呼叫時直接用  指令碼名.函式名()。很不實用,只能呼叫static的方法,而且static一直存在記憶體中 第二種,GameObject.Find("指令碼所在物體名").SendMessage("函式名");  此種方法可以呼

python調shell需要切換目錄

沒有 單獨 執行 pytho 後來 shel 但是 輸出 執行命令 最近遇到了一個問題,就是python代碼調用shell腳本時,發現輸入輸出的文件,總是和自己預想的有偏差,但是單獨在linux下執行命令的時候,卻沒有錯誤。後來發現是相對路徑的問題,因為執行pytho

完全備份數據和差異備份數據的shell

完全備份數據和差異備份數據的shell腳本#!/bin/bash # # Description: 該腳本功能,以周為單位循環;周五實行完全備份,周六不備份,周日至周四實行差異備份; # 因工作需要,不實行壓縮打包的方式,采用cp完全備份,rsync差異備份; #

我的shell編程

編程 shell 語言 對於shell腳本編程特點來說它是 過程式編程語言、腳本類型語言、解釋型語言。 在寫腳本的時候總是會遵循三種執行結構:順序執行結構、選擇執行結構、循環執行結構。 順序執行即:以從左到右,從上到下順序執行所有的語句(命令) 選擇執行結構:依照給定

Linux Shell——bash shell 簡介

運行環境 linux 關鍵字 程序 單詞 bash shell 腳本簡介shell 運行環境如果你運行的是 Unix 或 Linux 系統,例如 Ubuntu,Red Hat,SUSE Linux,還有macOS,都是內置了 bash shell 的,所以你不需要額外配置所謂的開發

shell

file 連接 sync centos tran 反引號 調用 base user 編寫腳本 1.xcall.sh 為了在任何目錄下都可以執行,可以配環境變量或環境變量指定的目錄,如:/usr/local/bin/ 因為訪問其他主機時,只能調用 在 /usr/bin 或

什麽是shell編程?

shell腳本編程什麽是Shell腳本示例:#!/bin/shcd~mkdirshell_tutcdshell_tutfor((i=0;i<10;i++));dotouchtest_$i.txtdone示例解釋第1行:指定腳本解釋器,這裏是用/bin/sh做解釋器的第2行:切換到當前用戶的home目錄第