我正在尝试使用包装器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'
有什么想法可以使它起作用吗?
答案 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