shell函式傳遞帶空格的引數
阿新 • • 發佈:2019-01-31
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)兩個錯誤都需要修改才行。