首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >连接所有参数并用双引号将它们括起来

连接所有参数并用双引号将它们括起来
EN

Stack Overflow用户
提问于 2010-06-24 01:54:37
回答 5查看 21.2K关注 0票数 19
function foo() {
A=$@...
echo $A
}

foo bla "hello ppl"

我希望输出为:

"bla“"hello ppl”

我需要做什么来代替省略号?

EN

回答 5

Stack Overflow用户

发布于 2010-06-24 03:36:54

@msw有正确的想法(在问题的评论中)。但是,打印带引号的参数的另一个想法是:使用printf的隐式迭代

foo() { printf '"%s" ' "$@"; echo ""; }

foo bla "hello ppl"
# => "bla" "hello ppl"
票数 25
EN

Stack Overflow用户

发布于 2010-06-24 02:59:03

使用参数替换添加“作为前缀和后缀:

function foo() {
    A=("${@/#/\"}")
    A=("${A[@]/%/\"}")
    echo -e "${A[@]}"
}

foo bla "hello ppl" kkk 'ss ss'

输出

"bla" "hello ppl" "kkk" "ss ss"
票数 6
EN

Stack Overflow用户

发布于 2010-06-24 02:03:56

您可以使用"$@“将每个参数视为单独的参数,然后循环遍历每个参数:

function foo() {
for i in "$@"
do
    echo -n \"$i\"" "
done
echo
}

foo bla "hello ppl"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3104209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档