如何将带有空格的参数集正确地传递到Shell函数中

0andriy

我的问题不是简单地用空格传递参数(我知道如何实现),请考虑更复杂的情况:

function build() {
  make CC="$1" CFLAGS="$2" $* # $* is not correct here!
}

build gcc "XXX" VAR1="a b" VAR2="c=A d=B" LDFLAGS="-L/opt/lib -lm"

等同于

make CC=gcc CFLAGS=XXX VAR1="a b" VAR2="c=A d=B" LDFLAGS="-L/opt/lib -lm"

我想实现这一功能,以便在Shell中工作(请使用便携式解决方案,没有bashisms等)。有什么建议,建议吗?

杰夫·谢勒(Jeff Schaller)

更好的解决方案有两个要素:

  • shift
  • (更多)引用

使用定义函数shift,如下所示:

function build {
  local cc="$1"
  local cflags="$2"
  shift 2
  make CC="$cc" CFLAGS="$cflags" "$@"
}

我们将前两个参数保存到局部变量中,然后将整个参数数组移动两个;另外,引用“ $ @”扩展名。

然后,使用额外的引号进行调用,如下所示:

build gcc "XXX" 'VAR1="a b" VAR2="c=A d=B"' 'LDFLAGS="-L/opt/lib -lm"'

单引号保护了函数中多余的参数;否则,外壳程序将删除引号,并且VAR2=c=A d=B在函数中将您留下(未引号)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将带有空格的参数从bash脚本传递到bash脚本?

来自分类Dev

如何将带有空格的字符串传递到PowerShell中?

来自分类Dev

将带有空格的选项/参数/参数从脚本传递到其中的函数

来自分类Dev

如何将带有空格的 2 列数据堆叠到没有空格的单列中

来自分类Dev

从Shell脚本中将带有空格的参数传递给命令?

来自分类Dev

将带有空格字符的参数传递给argparse

来自分类Dev

将带有空格的数组传递给Bash函数以充当其参数列表

来自分类Dev

Shell脚本如何在变量中传递带有空格的参数

来自分类Dev

如何在nohup中传递带有空格的参数?

来自分类Dev

如何将带有空格键的数组/对象传递给流星模板?

来自分类Dev

如何将带有空格的变量传递给环境解释器

来自分类Dev

如何将带有空格的Windows路径传递给Cygwin Bash

来自分类Dev

如何将带有空格的文件名传递给zip?

来自分类Dev

如何将带有空格的路径名传递给脚本内的 cd

来自分类Dev

当列标题中有空格时,如何正确地在Shiny中渲染DataTable

来自分类Dev

如何通过$ @将带有空格的sed命令传递给Bash函数

来自分类Dev

如何将带有点的批处理参数传递到Powershell脚本中?

来自分类Dev

Shell脚本传递带有空格的参数

来自分类Dev

如何将带有参数作为参数的函数传递给Python中的另一个函数?

来自分类Dev

如何正确地将参数传递给函数?[批]

来自分类Dev

如何正确地将成员函数作为参数传递

来自分类Dev

如何将带有2个参数的函数作为参数传递给函数?

来自分类Dev

需要将带有空格的参数传递给Java中打包在批处理文件中的命令

来自分类Dev

如何正确传递带有空格的字符串作为单独的命令行参数?

来自分类Dev

将带有空格和引号的参数传递给脚本(不引用所有内容)

来自分类Dev

如何将带有参数的参数传递给gulp?

来自分类Dev

将带有空格字符的字符串参数传递给内核模块

来自分类Dev

将带有空格的路径作为参数传递给批处理文件

来自分类Dev

将带有空格的参数$ *传递给第二个脚本

Related 相关文章

  1. 1

    如何将带有空格的参数从bash脚本传递到bash脚本?

  2. 2

    如何将带有空格的字符串传递到PowerShell中?

  3. 3

    将带有空格的选项/参数/参数从脚本传递到其中的函数

  4. 4

    如何将带有空格的 2 列数据堆叠到没有空格的单列中

  5. 5

    从Shell脚本中将带有空格的参数传递给命令?

  6. 6

    将带有空格字符的参数传递给argparse

  7. 7

    将带有空格的数组传递给Bash函数以充当其参数列表

  8. 8

    Shell脚本如何在变量中传递带有空格的参数

  9. 9

    如何在nohup中传递带有空格的参数?

  10. 10

    如何将带有空格键的数组/对象传递给流星模板?

  11. 11

    如何将带有空格的变量传递给环境解释器

  12. 12

    如何将带有空格的Windows路径传递给Cygwin Bash

  13. 13

    如何将带有空格的文件名传递给zip?

  14. 14

    如何将带有空格的路径名传递给脚本内的 cd

  15. 15

    当列标题中有空格时,如何正确地在Shiny中渲染DataTable

  16. 16

    如何通过$ @将带有空格的sed命令传递给Bash函数

  17. 17

    如何将带有点的批处理参数传递到Powershell脚本中?

  18. 18

    Shell脚本传递带有空格的参数

  19. 19

    如何将带有参数作为参数的函数传递给Python中的另一个函数?

  20. 20

    如何正确地将参数传递给函数?[批]

  21. 21

    如何正确地将成员函数作为参数传递

  22. 22

    如何将带有2个参数的函数作为参数传递给函数?

  23. 23

    需要将带有空格的参数传递给Java中打包在批处理文件中的命令

  24. 24

    如何正确传递带有空格的字符串作为单独的命令行参数?

  25. 25

    将带有空格和引号的参数传递给脚本(不引用所有内容)

  26. 26

    如何将带有参数的参数传递给gulp?

  27. 27

    将带有空格字符的字符串参数传递给内核模块

  28. 28

    将带有空格的路径作为参数传递给批处理文件

  29. 29

    将带有空格的参数$ *传递给第二个脚本

热门标签

归档