我在bash脚本中尝试了以下几种形式:
#!/bin/bash
svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"
但是我无法获得正确展开COLUMNS
环境变量的语法。
我尝试过以下几种形式:
svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W $COLUMNS'
和
svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W ${COLUMNS}'
和
eval svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"
有什么建议吗?
发布于 2009-05-09 19:45:21
如果不确定,您可以在终端上使用'cols‘请求,并忘记列:
COLS=$(tput cols)
发布于 2009-05-08 16:29:08
下面的脚本适用于$COLUMNS
的多个值。我想知道您是否在此调用之前没有设置COLUMNS
?
#!/bin/bash
COLUMNS=30
svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"
您能否在脚本中回显$COLUMNS
以查看其设置是否正确?
发布于 2009-05-09 08:04:57
您做得很对,所以我猜是其他原因造成的(不是导出列?)。
调试这些情况的一个技巧是创建一个专门的命令(对于编程语言人员来说是一个闭包)。创建一个名为diff-column的shell脚本,执行以下操作:
exec /usr/bin/diff -x -y -w -p -W "$COLUMNS" "$@"
只需使用
svn diff "$@" --diff-cmd diff-columns
这样你的代码读起来更整洁,模块化程度更高(自上而下的方法),而且你可以粗略地单独测试不同列的代码(自下而上的方法)。
https://stackoverflow.com/questions/840536
复制相似问题