1. 程式人生 > >[shell]如何跨shell指令碼檔案呼叫函式

[shell]如何跨shell指令碼檔案呼叫函式

問題背景

        在寫shell程式碼的過程中,遇到一件低效率的事情。
寫三個日誌列印函式,在很多檔案中很多次使用。但是不想每個檔案都定義一次。
比如程式碼如下:
function LOG_NOTICE()
{
        echo -e "\033[34m${1}\033[0m"
}


function LOG_ERROR()
{
        echo -e "\033[4m\033[1m\033[33mERROR:\033[0m\033[33m${1}\033[0m"
}

解決方案

   將如上程式碼定義到檔案中,比如log.sh
   利用source ./log.sh後呼叫
   log.sh檔案內容如下
#!/bin/bash


function LOG_NOTICE()
{
        echo -e "\033[34m${1}\033[0m"
}


function LOG_ERROR()
{
        echo -e "\033[4m\033[1m\033[33mERROR:\033[0m\033[33m${1}\033[0m"
}


   呼叫函式的內容如下:
#!/bin/bash

source ./log.sh

LOG_NOTICE "NOTICE"
LOG_NOTICE "ERROR" 

延伸

source filename
Read  and  execute commands from filename in the current shell environment and return the exit status of the last command executed from filename.
在當前shell環境中,讀取和執行檔案中的命令,並返回最後一行的退出狀態

相關推薦

[shell]如何shell指令碼檔案呼叫函式

問題背景        在寫shell程式碼的過程中,遇到一件低效率的事情。寫三個日誌列印函式,在很多檔案中很多次使用。但是不想每個檔案都定義一次。比如程式碼如下:function LOG_NOTICE() { echo -e "\033[34m${1}\03

Linux學習1之shell中將指令碼檔案呼叫函式的輸出值輸出到檔案

一般a.sh等指令碼檔案可以很容易的將a.sh的echo等資料輸出到文字檔案,如: ./a.sh >1.txt 但是無法將指令碼檔案呼叫函式的輸出值輸出到檔案 可以使用%>: [email

Linux---shell變數及指令碼中的函式

一、什麼是變數? shell在定義變數的時候,變數名與變數之間不能存在空格,這個大多數的語言的這個不同還是蠻大的,不過定義的規則就其他的語言定義的規則大致相同了。 1) 區域性變數 區域性變數在指令碼或命令中定義,僅在當前shell例項中有效,其他shel

如何在客戶端上傳shell指令碼檔案,並利用PHP呼叫執行指令碼

題目中的上傳包含兩部分,一部分是上傳檔案,一部分是利用PHP執行指令碼 上傳檔案到指定資料夾 所謂檔案上傳是指將本地文字檔案,圖片視訊或者音訊等檔案上傳到伺服器上,以供後續操作的過程。 上傳檔案有幾種方式,包括: - 單純的form表單上傳提交 使

利用Oracle DBMS_SCHEDULER呼叫shell指令碼檔案

今天在itpub上看到個帖子,大意是使用shell指令碼取檔案列表,和資料庫中一個表中記錄的檔名相比較,沒有的插入到表裡去。實驗程式碼如下:#建立檔案filelist.sh如下: #!/bin/bash

shell函式檔案呼叫函式

碰到一個shell中函式呼叫的小問題,記錄一下。 shell中函式有三種呼叫方式,一種是在檔案前面定義函式,然後在下面直接呼叫;一種是通過載入shell,在shell中直接呼叫;第三種是將函式寫入檔案,然後在其他shell中呼叫函式。 這裡寫一下關於第三種方法的例子: is

shell .bashrc中函式在其他指令碼無法呼叫問題

在指令碼中需要使用 .bashrc中的函式,無法呼叫時將[ -z "$PS1" ] && return 修改為#[ -z "$PS1" ] && return,然後再呼叫指令碼最前面加s

Linux/Unix shell 指令碼呼叫SQL RMAN指令碼

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

shell指令碼中的函式與子shell

shell指令碼中的函式與子shell 原文https://www.jianshu.com/p/7db79d7997b5 函式 函式的使用 bash中也有函式。一個函式就是一個子程式,是用於實現一串操作的程式碼塊。bash中的函式的形式如下: functi

shell指令碼執行已有的其他指令碼檔案

工作中常遇到一些資料問題,需要各種指令碼去處理,各種先後順序,還要處理多個庫,還會遇到某個指令碼處理某個庫時報錯需要重新處理的問題,因此用一個shell把它們串起來就比較方便了 1.多個庫執行同一個指令碼 #/bin/bash city_array=('bj' 'sh' 'tj' )

一個小坑: -bash: ./backup.sh: /bin/bash^M: bad interpreter: No such file or directory 由於shell指令碼檔案被我在Windows下編輯過,出現上面錯誤的原因之一是指令碼檔案是DOS格式的, 即每一行的行尾以\r\n來標識

    由於shell指令碼檔案被我在Windows下編輯過,出現上面錯誤的原因之一是指令碼檔案是DOS格式的, 即每一行的行尾以\r\n來標識, 使用vim編輯器開啟指令碼, 執行::set ff? 可以看到DOS或UNIX的字樣. 使用se

編寫第一個shell指令碼檔案

vi test.sh 這樣就新建了一個名為test.sh的指令碼檔案,之後按i進入編輯模式,輸入以下內容: echo "What is your name?" read PERSON echo "Hello, $PERSON" 按esc鍵退出編輯模式,再輸

shell指令碼檔案中for迴圈的兩種寫法

#!/bin/bash for (( i = 0; i <= 10; i++ )) ; do echo "The value is: $i" done echo -e "\nJourneys end in lovers' meeting."

shell指令碼檔案檢視使用者目錄下的某類檔案

檢視使用者目錄下的以.bash開頭的檔案 #!/bin/bash for FILE in $HOME/.bash* do echo $FILE done 先在使用者目錄下建立一個指令碼檔案:touch bas.sh,再開啟這個檔案:open bas.

awk執行的三種方式,以及awk以shell指令碼檔案形式執行的注意事項

awk執行有三種形式: 1.直接以命令列來執行,如圖: 2.以awk指令碼檔案來執行 需要加-f選項。 3.以shell指令碼的形式來執行         以shell指令碼形式執行時,行首的#!/bin/bash 需變換為#!/bin/awk(awk所在的路徑

Shell指令碼檔案練習

使用if條件語句來判斷/media/cdrom檔案是否存在,若存在就結束條件判斷和整個Shell指令碼,反之則去建立這個目錄: vim mkcdrom.sh #!/bin/bash DIR="/media/cdrom" if [ ! -e $DIR ] then

Linux下使用shell指令碼自動執行指令碼檔案

一、定時複製檔案   a、在/usr/local/wfjb_web_back目錄下建立 tomcatBack.sh檔案   檔案內容: ? 1 2 #將tomcat中的應用wfjb_web 複製到 /usr/local/wfjb_web_bac

Shell 指令碼呼叫另一個 Shell 指令碼的三種方式

先來說一下主要以下有幾種方式: fork: 如果指令碼有執行許可權的話,path/to/foo.sh。如果沒有,sh path/to/foo.sh。 exec: exec path/to/foo.sh source: source path/to/foo.s

shellshell指令碼在大檔案日誌中按照時間段快速搜尋日誌

問題描述: 在大流量線上服務中,日誌系統會產生數量龐大的日誌,動輒就是幾十G。在如此之大的檔案中快速搜尋日誌是運維人員經常遇見的問題。我們經常遇見的問題是查詢一段時間內的某些條日誌。比如,今天有一

編寫shell指令碼檔案來批量執行labelme_json_to_dataset

總結: 主要有三個點要把握好: 1.shell的語法(這個網上資料很多) 2.labelme轉化時候要啟用自己安裝labelme的anaconda環境,要不然就找不到labelme_json_to_dataset 3.出現Bad for loop variable不是