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

相关文章
相关标签/搜索