eval 上包含空格的 bash 错误

eval 上包含空格的 bash 错误

我需要触发一个 bash 传递参数,其格式为 [variable_name="value"],如下所示:

./test.sh ip='164.130.21.98' hostname='whatever' pwd='/test' ftpcmd='CWD debug' user='stefano'

在 test.sh 脚本上,我想为任何变量分配相关值:

#!/bin/bash
eval `echo "$@"`
echo $ftpcmd

但我得到一个prova: command not found错误。

我无法理解我的参数出了什么问题ftpcmd='CWD debug',也不知道我应该如何编写它。

如果我尝试用声明替换 eval ,则$ftpcmd仅将其设置为CWD而不是CWD debug我所期望的。

答案1

如果你把作业剧本

ip='164.130.21.98' hostname='whatever' pwd='/test' ftpcmd='CWD debug' user='stefano' ./test.sh 

这些变量在脚本环境中可用。该-k选项治疗全部分配,而不仅仅是预命令分配,如环境修改。

set -k
./test.sh ip='164.130.21.98' hostname='whatever' pwd='/test' ftpcmd='CWD debug' user='stefano'
set +k

无论哪种情况,eval都根本不需要并且可以删除。

相关内容