我在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
我不明白为什么会发生错误。是什么原因?
答案 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中捕获输出。不是返回值。