如何将参数中的空格传递给变量中的命令

弗雷德里克

我想将要执行的bash命令放在一个变量中,然后执行该变量。该命令具有参数,并且其中一些参数中可能包含空格。我怎样才能做到这一点?

到目前为止我尝试过的是这样的:

nbargs(){ echo $#; }          # define some function

command='nbargs 1 "2 3"'      # I want nbargs to recieve 2 args, not 3      

现在,如果一个人直接调用该命令,它将按预期工作。但是间接地,通过变量却没有。

nbargs 1 "2 3"   # output: 2
echo $command    # output: nbargs 1 "2 3"
$command         # output: 3 ???

我该如何解决我的问题,您能否解释为什么执行变量时不考虑引号?

阿努巴瓦

如果要存储完整的命令行来调用函数,则应使用shell数组:

cmd=(nbargs 1 "2 3")

并将其称为:

"${cmd[@]}"

这将正确输出:

2

不要使用变量名command,因为它也是shell实用程序。

像在字符串变量中一样存储完整命令很容易出错。当您有空格,引号等时

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将存储在变量中的以空格分隔的参数传递给命令

如何将变量传递给 Python 中的 bash 命令

如何将存储在变量中的参数传递给WGET

如何将命令行参数值传递给静态变量到Java中的jar文件

如何将空格分隔字符串的多个变量传递给 bash 中的函数?

如何将命令传递给模板,并使其在我的后端代码中执行并传递参数?

如何将修饰器中的变量传递给修饰函数中的函数参数?

如何将包含空格的文件或文件夹作为参数传递给 GNU/Linux 或 Cygwin 环境中的命令行程序?

如何将命令行参数传递给Windows批处理文件中的程序?

如何将参数传递给在CLI(命令行界面)中运行的docker?

如何将命令行参数传递给在docker中运行的python脚本

如何将所有命令行参数传递给Makefile中的程序?

如何将命令行参数传递给 powershell 2.0 中的调用会话

BASH:如何将数组中的字符串作为参数传递给命令?

如何将 Json 变量传递给 Azure DevOps 管道中的命令行任务?

如何将 shell 变量传递给读取脚本中控制台输入的命令?

如何通过脚本中的变量将'*'通配符传递给find命令的路径参数?

如何将不同的值(包括存储在变量中的空格分隔的字符串)传递给grep命令

Django:如何将JavaScript变量传递给Django URL作为Ajax中的参数?

如何将字符串作为参数传递给需要R中的变量的函数

如何将多个参数传递给 Scala 中的单个变量

如何将向量作为变量参数传递给 R 中的函数

如何将变量传递给 azure yaml 中的模板参数?

在 Perl 中,如何将变量作为参数传递给子程序?

如何将输入从Bash中的文件传递给命令

如何将参数传递给 angular 中的指令函数?

在GDB中如何将参数传递给函数

如何将参数传递给数组中的函数?

如何将参数传递给python中的函数