【问题标题】:Call another shell script with argument which contains whitespce使用包含空格的参数调用另一个 shell 脚本
【发布时间】:2015-11-25 05:29:59
【问题描述】:

脚本 A:

#!/bin/bash
. foo.sh
ARGS="a \"b c\" d"
./foo.sh $ARGS

脚本 foo:

#!/bin/bash

echo "$1"
echo "$2"
echo "$3"
echo "$4"

执行脚本A后,得到如下结果:

一个

"b

c"

d

我的预期结果是:

一个

bc

d

谁能告诉我原因,以及如何更改以获得预期的结果,提前谢谢。

【问题讨论】:

    标签: linux shell arguments


    【解决方案1】:

    要存储多个带有空格的参数,最好使用 shell 数组:

    ARGS=(a "b c" d)
    

    并将脚本称为

    ./foo.sh "${ARGS[@]}"
    

    这将打印:

    a
    b c
    d
    

    【讨论】:

    • 这个方法我试过了,结果不正确,其实和上一个一样。
    • 在尝试此操作之前,您能否确保您正在运行 bash
    • bash A.sh 1:a 2:b 3:c 4:d
    • 谢谢,我错过了报价,现在可以使用了,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 2023-03-18
    • 2012-06-05
    • 1970-01-01
    • 2012-07-13
    相关资源
    最近更新 更多