调用bash脚本第11行的错误:/ home / tmp:是一个目录

时间:2015-02-03 20:06:49

标签: bash

我在test.sh中定义了以下bash函数


function escaped {
    path="$1"
    if [ $path ?? '\' ]; then
    return "$path"
    fi
    ret=${path//\\/}
    return "$ret"

}

a=escaped   $1

运行脚本:

-bash-4.3# ./test.sh /home/tmp 
./test.sh: line 11: /home/tmp: Is a directory

我不明白为什么会发生错误。是什么原因?

1 个答案:

答案 0 :(得分:1)

a=escaped $1行没有达到预期的效果。

您希望使用escaped参数调用$1函数(字符串" / home / tmp")并将结果存储在{{1变量。

你不是那样做的。

您正在执行的操作是将a(" / home / tmp")的值作为命令,并将变量$1分配给值a它的起始环境。

escaped的输出与env | grep foo=的输出进行比较。

您希望在脚本中执行的操作是这样做。

foo=bar env | grep foo=

假设您希望a=$(escaped $1") 函数的输出存储在escaped变量中。

注意:shell函数不能a个字符串,只能是整数。 注意:return从命令/函数/ etc中捕获输出。不是返回值。