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时尽可能把引用变量用双引号括起来。