首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash中的单引号问题

Bash中的单引号问题
EN

Unix & Linux用户
提问于 2022-11-09 10:28:55
回答 1查看 151关注 0票数 3

我有一个用于初始化dzen2的sh脚本,我希望在那里使用源代码专业字体。这是密码..。

代码语言:javascript
运行
复制
param="-p -dock -fn 'Source Code Pro-10'"

# the generated_output function is not important
generated_output | dzen2 $param

问题是,脚本不起作用!dzen2没有开始..。经过搜索,我发现这个问题可能是因为单引号'或双引号"的一些问题,而我并不真正理解.

我试过这样做:

代码语言:javascript
运行
复制
param=还是不管用..。这个剧本怎么了?-p -dock -fn \'Source Code Pro-10\''
# or something like this
param='-p -dock -fn '"'"'Source Code Pro-10'"'"

还是不管用..。这个剧本怎么了?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-11-09 10:34:17

如果您想要跟踪几个单独的字符串(参数),然后将它们作为单独的字符串使用,请不要将它们存储在同一个字符串中。使用数组代替:

代码语言:javascript
运行
复制
param=(-p -dock -fn 'Source Code Pro-10')
generated_output | dzen2 "${param[@]}"

引用的展开"${param[@]}"将展开为数组param中的字符串列表。请注意,这意味着Source Code Pro-10将是一个参数,这正是您想要的。如果您忘记了展开前后的引号,shell将继续拆分$IFS字符(默认情况下为空格、制表符和换行符)上的每个字符串,然后将文件名全局化应用于每个生成的单词。

您的代码依赖于shell将字符串-p -dock -fn 'Source Code Pro-10'拆分为命令的参数。由于shell默认在空格、选项卡和换行符上拆分,这将导致子字符串'Source Code Pro-10'变成单独的参数'SourceCodePro-10' (注意,单引号也包含在字符串中)。

相关信息:

sh脚本中,您可以使用位置参数列表:

代码语言:javascript
运行
复制
set -- -p -dock -fn 'Source Code Pro-10'
generated_output | dzen2 "$@"

这也适用于bash外壳程序。

票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/724220

复制
相关文章

相似问题

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