首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Bash中使用带引号的字符串内的环境变量

如何在Bash中使用带引号的字符串内的环境变量
EN

Stack Overflow用户
提问于 2009-05-08 15:57:57
回答 3查看 205.4K关注 0票数 127

我在bash脚本中尝试了以下几种形式:

代码语言:javascript
复制
#!/bin/bash
svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"

但是我无法获得正确展开COLUMNS环境变量的语法。

我尝试过以下几种形式:

代码语言:javascript
复制
svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W $COLUMNS'

代码语言:javascript
复制
svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W ${COLUMNS}'

代码语言:javascript
复制
eval svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-09 19:45:21

如果不确定,您可以在终端上使用'cols‘请求,并忘记列:

代码语言:javascript
复制
COLS=$(tput cols)
票数 20
EN

Stack Overflow用户

发布于 2009-05-08 16:29:08

下面的脚本适用于$COLUMNS的多个值。我想知道您是否在此调用之前没有设置COLUMNS

代码语言:javascript
复制
#!/bin/bash
COLUMNS=30
svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"

您能否在脚本中回显$COLUMNS以查看其设置是否正确?

票数 2
EN

Stack Overflow用户

发布于 2009-05-09 08:04:57

您做得很对,所以我猜是其他原因造成的(不是导出列?)。

调试这些情况的一个技巧是创建一个专门的命令(对于编程语言人员来说是一个闭包)。创建一个名为diff-column的shell脚本,执行以下操作:

代码语言:javascript
复制
exec /usr/bin/diff -x -y -w -p -W "$COLUMNS" "$@"

只需使用

代码语言:javascript
复制
svn diff "$@" --diff-cmd  diff-columns

这样你的代码读起来更整洁,模块化程度更高(自上而下的方法),而且你可以粗略地单独测试不同列的代码(自下而上的方法)。

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

https://stackoverflow.com/questions/840536

复制
相关文章

相似问题

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