脚本的空格分隔参数

时间:2018-11-19 10:39:30

标签: bash

我正在尝试使用包装器bash脚本执行一些命令,该命令的一个参数用空格“ A B”分隔。

foo-wrapper.sh内容:

#/!bin/bash
foo $1

运行foo-wrapper.sh时:

$bash -x foo-wrapper.sh "'A B'"
+ Error: foo ''\''A' 'B'\'''

预期的电话为:foo 'A B'

有什么想法可以使它起作用吗?

1 个答案:

答案 0 :(得分:1)

  • 在包装中,将$1替换为"$1"
    如果您的参数/变量包含空格字符,则需要用引号引起来以防止它们被拆分。

  • 在通话中,使用"'A B'""A B"'A B'之一代替A\ B
    这些是在BASH中指定字符串的最常用方法。 (请注意,空格仅在第3种情况下有所不同。无论是否有空格,都必须在前两种情况下使用引号。)

如果您想玩些游戏以获得感觉,可以从以下开始:

$ foo() { echo "count: $#"; echo "arg 1: $1"; echo "arg 2: $2"; }
$ foo A\ B C
count: 2
arg 1: A B
arg 2: C