shell函數傳遞帶空格的參數

shell中的參數以空格爲分割符,常常會碰到須要傳遞帶空格的參數,例如傳遞帶空格的文件名。shell

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

 

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

舉個例子,遍歷文件的一部分element

#!/bin/bash變量

dir="/home/my dir"遍歷

func()引用

{方法

for elment in $1/*; dodi

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時儘可能把引用變量用雙引號括起來。

相關文章
相關標籤/搜索