【发布时间】:2017-09-15 02:42:55
【问题描述】:
我有一个接受多个命令行参数($1、$2、...等)的 bash 脚本。启动脚本的程序是,出于我不会在这里讨论的原因,将命令行参数作为一个字符串传递,bash 脚本将其解释为 $1。这个字符串包含所需参数之间的空格,但 bash 仍将其解释为单独的命令行参数。有没有办法告诉 bash 使用空格作为分隔符来解析它的命令行参数?
例如,如果 argstring = 50 graphite downtick 我希望 bash 看到 $1=50 $2=graphite $3=downtick,而不是 $1=50 graphite downtick
【问题讨论】:
-
不要引用扩展名,它会分词(但它会在每个空格上分词,这也可能不是您想要的。并注意 glob。)
-
@rici 我不明白你所说的“不要引用扩展名”是什么意思。
-
当您使用 $1 时。大概你在某处使用它。如果要将其拆分为位置参数,可以使用
set -- $1。如果你想将它作为三个单词传递给不同的命令:other_cmd $1。只要您不引用扩展名 ("$1"),它就会被拆分。 +但这是传递多个参数的次优方式。)
标签: bash