1. 程式人生 > >shell函式傳遞帶空格的引數

shell函式傳遞帶空格的引數

shell中的引數以空格為分割符,經常會碰到需要傳遞帶空格的引數,例如傳遞帶空格的檔名。

方法很簡單:給引數加雙引號。

但是實際效果要看你的函式內容,一種可能的情況是: 其實你真的傳遞進去了帶空格的引數,但是在函式體內忽略了繼續對該變數加引號,導致出現很惱人的錯誤。

舉個例子,遍歷檔案的一部分

#!/bin/bash

dir="/home/my dir"

func()

{

for elment in $1/*; do

echo "$element"

}

func $dir

上面有兩個錯誤,應該改成

#!/bin/bash

dir="/home"

func()

{

for elment in $1/*; do   ####(2)####for elment in "$1"/*; do   ########確保函式接受進來的引數一直作為一個整體存在!

echo "$element"

}

func $dir   ########(1)#####    func "$dir"   ###確保引數作為一個整體傳遞進了函式

################### (1)(2)兩個錯誤都需要修改才行。

所以,雙引號的作用在這裡體現的淋漓盡致,平時我們可能嫌麻煩,對變數的引用不加雙引號,這是一種不好的習慣。以後記著寫shell時儘量把引用變數用雙引號括起來。