shell指令碼編程一

來源:互聯網
上載者:User

標籤:shell、指令碼編程

指令碼注釋:

   在shell指令碼中,跟在(#)號後面的內容表示注釋,用來對指令碼進行注釋說明,注釋部分不會被執行,注釋可自成一行,也可以跟在指令碼命令後面與命令在同一行。開發指令碼時,如果沒有注釋,其他人就很難理解指令碼究竟在做什麼,時間長了自己也會忘記。因此,我們要發發盡量養成為所做的工作(指令碼等)書寫注釋習慣,不光是方便別人,也方便自己。否則,寫完一個指令碼後也許幾天后就記不起指令碼的用途了,在重新閱讀也會浪費很多寶貴時間。

指令碼的執行

Shell指令碼的執行通常可以採用以下三種方式:

1)   Bash script-name或sh script-name

2)   Path/script-name或./script-name(當前路徑下執行指令碼)

3)   Source script-name或 .script-name

執行說明:

第一種方法是當指令檔本身沒有可執行許可權時常使用的方法,這裡推薦用bash執行。

第二種方法需要先將指令檔的許可權改為可執行,具體方法:chmod u+x script-name 或 chmod 755script-name。然後通過指令碼路徑就可以直接執行指令碼了。

    在生產環境中,不少讀者在寫完了shell指令碼後,由於忘記給指令碼執行許可權,就直接應用了,結果導致指令碼沒有按自己的意願手動或定時執行,這一點請讀者注意,避免方法就是用第一種方法替代第二咱方法。

第三種方法通過是使用source或者”.”號讀入或載入指定的shell指令檔,然後,依次執行指定shell指令檔中的所有語句。使用source或者“.”號可以將自身指令碼中的變數的值或函數等的傳回值傳遞到當前的父指令碼使用。這是與前面兩種方法的最大區別。

下面我們舉例說明:

第一種方法:

[[email protected]]# cat >test.sh

echo ‘I amsky9899‘

[[email protected]]# cat test.sh

echo ‘I amsky9899‘

[[email protected]]# sh test.sh

I amsky9899

[[email protected]]# bash test.sh

I amsky9899

第二種方法:

[[email protected]]# ls -l test.sh

-rw-r--r--.1 root root 20 2月   103:23 test.sh

[[email protected]]# ./test.sh

bash:./test.sh: 許可權不夠

[[email protected]]# chmod u+x test.sh

[[email protected]]# ls -l test.sh

-rwxr--r--.1 root root 20 2月   103:23 test.sh

[[email protected]]# ./test.sh

I amsky9899

第三種方法:

[[email protected]]# source test.sh

I amsky9899

[[email protected]]# . test.sh

I amsky9899

echo ‘I am sky9899‘

[[email protected] sky]# echo ‘userdir=`pwd`‘ > testsource.sh

[[email protected] sky]# cat testsource.sh

userdir=`pwd`

[[email protected] sky]#sh testsource.sh

[[email protected] sky]#echo $userdir   

#此處為空白,並沒有出現當前路徑。

 根據上面例子,我們可以發現,通過sh或bash命令執行過的指令碼,指令碼結束後在當前shell視窗查看userdir變數的值, 發現值是空的。現在以同樣步驟改用source執行,然後在看看userdir變數的值。

[[email protected] sky]# source testsource.sh

[[email protected] sky]# echo $userdir

/home/sky

注意:通過source或”.”點號載入執行過的指令碼,在指令碼結束後指令碼中的變數值在當前shell中依然存在,而sh和bash則不行。因此,在做shell指令碼開發時,如果指令碼中有需求引用其他指令碼的內容或者設定檔時,最好用”.”點號或source在指令碼開頭載入該指令碼或設定檔,然後在下面的內容可以用調用 source載入的指令碼及檔案中的變數及函數等內容。

Linux營運職位實際面試筆試填空題(3)

[[email protected] sky]# cat test.sh

User=`whoami`

[[email protected] sky]# sh test.sh

[[email protected] sky]# echo $user

問:執行echo $user命令的結果是什嗎?

答案:

1)   目前使用者

2)   Sky

3)   空(無內容)

   Shell指令碼開發基本規範及習慣

1)  開頭指定指令碼解譯器

   #!/bin.sh或#!/bin/bash

2)  開頭加版本著作權等資訊

   #Date:

   #Author:

   #Mail:

   #Function:

   #Version:

3)  指令碼中不用中文注釋:

   盡量用英文注釋,防止本機或切換系統內容後中文亂碼的困擾。

4)  指令碼以.sh為副檔名:

   Script-name.sh

5)  代碼書寫優秀習慣:

   { }、[ ]、‘’、` `、“ “

 


本文出自 “Linux~DBA~MBA” 部落格,請務必保留此出處http://sky9896.blog.51cto.com/2330653/1610345

shell指令碼編程一

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.