在 Bash 4.1 机器上,
我正在尝试使用“双括号”[[ expression ]]来使用“ NEGATIVE LOOKAHEAD ”进行正则表达式比较。
我做了“ set +H”来禁用 BASH 变量' !'扩展命令历史搜索。
我想匹配“任何字符串”,除了“ arm-trusted-firmware ”。
set +H
if [[ alsa =~ ^(?!arm-trusted-firmware).* ]]; then echo MATCH; else echo "NOT MATCH"; fi
Run Code Online (Sandbox Code Playgroud)
我希望这会打印“MATCH”,但它会打印“NOT MATCH”。
查看“双括号”的返回码后,它返回“2”:
set +H
[[ alsa =~ ^(?!arm-trusted-firmware).* ]]
echo $?
Run Code Online (Sandbox Code Playgroud)
根据 bash 手册,返回值 '2' 表示“正则表达式在语法上不正确”:
可以使用额外的二元运算符 =~,其优先级与 == 和 != 相同。
使用时,运算符右侧的字符串被视为扩展正则表达式并进行相应匹配(如 regex(3) 中所示)。
如果字符串与模式匹配,则返回值为 0,否则为 1。如果正则表达式在语法上不正确,则条件表达式的返回值为 2。
我做错了什么?
在我的原始脚本中,我正在与 STRING 列表进行比较。
当它匹配时,我触发一些函数调用;
当它不匹配时,我会跳过我的动作。
所以,是的,从这个例子中, …
希望有一个递归函数,它接受一个字符串并删除结尾'[x]'.例如'abc [1] [3]'需要是'abc [1]'.该字符串也可以是'abc [1] [5] [2]',并且需要是'abc [1] [5]'.
我正在尝试,str.replace(/[\\\[\d\\\]]$/, '')但它只取代了最后一个结束括号而忽略了其他一切.
有任何想法吗?
任何人都知道为什么这不起作用?
$('#screen').css({
'background-image': [bg_num == 1 ? 'josh' : 'jessi'] + '_background.jpg',
'background-color': 'red'
});
Run Code Online (Sandbox Code Playgroud)
背景颜色正在设置,但图像不是.
我没有太多练习在Javascript中使用方括号来完成这种事情.如果我做错了什么,任何人都有提示吗?或者对它们的使用没有很好的解释?
编辑:只是要清楚,检查本身实际上正在发生,因为如果我在console.log()中做同样的事情输出"josh_background.jpg"就好了.它只是没有采用这个CSS设置功能.
这可能听起来有点不寻常,我以前从来不需要用这种方式使用方括号表示法,并绞尽脑汁我想不出能够产生预期结果的方法.
我正在实现一个回调包装器来维护this传递方法作为回调时的引用
例如
foo.prototype.wrap = function(name){
var wrapper,
self = this;
wrapper = function(){
self[name](arguments);
};
return wrapper;
};
// usage
foo.wrap('bar');
// executes foo.bar maintaining 'this' as a reference to foo
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是foo有一些嵌套方法
例如
foo.bar.close();
Run Code Online (Sandbox Code Playgroud)
我试图想办法让wrap方法支持嵌套方法
例如
foo.wrap('bar.close')
// or
foo.wrap('bar','close');
Run Code Online (Sandbox Code Playgroud)
因此该foo.wrap函数需要动态添加对应于传入的长度或参数的方括号.
例如
self[x][y][z](arguments);
Run Code Online (Sandbox Code Playgroud)
我想不出办法做到这一点.有任何想法吗 ?
我怀疑这是不可能的.
我正在维护由SQL Server中的其他人创建的数据库.在一个表中,我找到了一个名称在方括号之间的列.该字段的名称是desc,它作为表存储在表中[desc].其他字段存储时没有方括号.这个选择背后有什么特殊原因/惯例吗?
构建在数据库之上的应用程序是用C#或VB.NET开发的.
谢谢
在eclipse luna的最新版本中,在任何编辑器中都不可能使用方括号.我有一个德国键盘,我不想切换到英文布局.在首选项 - >常规 - >键下,无法找到组合键altgr- 8或altgr- 9.我卸载了emmet和freemarker,但这并没有解决问题.
是否有人知道如何解决这个问题?
我试图拆分下面的字符串,但我想排除其中的所有内容[[......]].我已尝试使用我在此处找到的多个建议,但它们都没有工作.
[675: test, 676: test1, 677: test2, 678: [[{"id":0,"value":"15"},{"id":1,"value":"2"},
{"id":2,"value":"2"}],[{"id":0,"value":"2"},{"id":1,"value":"3"},
{"id":2,"value":"3"}],[{"id":0,"value":"5"},{"id":1,"value":"6"},
{"id":2,"value":"6"}],[{"id":0,"value":"7"},{"id":1,"value":"8"}],
[{"id":0,"value":"99"},{"id":1,"value":"8"},{"id":2,"value":"7"}]]]
Run Code Online (Sandbox Code Playgroud)
我希望能够得到这样的结果:
675: test
676: test1
677: test2
678: [[{"id":0,"value":"15"},{"id":1,"value":"2"}, {"id":2,"value":"2"}],
[{"id":0,"value":"2"},{"id":1,"value":"3"},{"id":2,"value":"3"}],
[{"id":0,"value":"5"},{"id":1,"value":"6"}, {"id":2,"value":"6"}],
[{"id":0,"value":"7"},{"id":1,"value":"8"}],
[{"id":0,"value":"99"},{"id":1,"value":"8"},{"id":2,"value":"7"}]]]
Run Code Online (Sandbox Code Playgroud)
我尝试用逗号分割字符串,但也拆分了方括号中包含的所有数据.
谢谢
我正在编写一个简单的脚本来检查一些存储库更新,如果需要,我正在从这些更新中创建新的软件包以安装它所引用的那些程序的新版本(在Arch Linux中).所以我在执行真实脚本之前做了一些测试.
问题是我从这段代码中得到错误[: excessive number of arguments(但我认为正确的翻译[: too many arguments):
# Won't work despite the double quoted $r
if [ "$r" == *"irt"* ]; then
echo "TEST"
fi
Run Code Online (Sandbox Code Playgroud)
代码是通过添加双方括号来修复的,我感谢@ user568458的这个SO答案:
# Makes the code works
if [[ "$r" == *"irt"* ]]; then
echo "TEST"
fi
Run Code Online (Sandbox Code Playgroud)
注意,$r定义如下:
# Double quotes should fix it, right? Those special characters/multi-lines
r="$(ls)"
Run Code Online (Sandbox Code Playgroud)
还要注意,一切都在循环内,循环成功.每次if比较匹配时都会出现问题,而不是打印已"TEST"发出的,直接跳到循环的下一次迭代(没问题:此后没有代码存在if).
我的问题是:为什么每次字符串匹配时都会发生错误?根据我的理解,双引号就足以解决它.此外,如果我依靠双方括号来修复它,一些shell将无法识别它(参考上面提到的答案).有什么选择?
Shell脚本似乎是一个全新的编程范例.我从来没有完全掌握细节,也无法找到一个很好的源代码.
我想使用包含数字的字符串作为脚本的输入。这个列表可能很长,可能包含连续的数字范围,所以我考虑做ls样式列表规范。但是,如何在脚本中扩展此列表?更具体地说,我想运行:
myscript node-[2,5-7,10-13]
Run Code Online (Sandbox Code Playgroud)
并且能够在我的脚本中循环遍历 node-2、node-5、node-6 等。
更新:似乎我需要对列表使用大括号和点。我可以将字符串转换为该字符串,但是如何让脚本将其视为列表呢?我可以做什么:
nodelist=`echo $1 | sed 's/\[/\{/' | sed 's/\]/\}/' | sed 's/-/../'`
Run Code Online (Sandbox Code Playgroud)
但对于输入node[1-3],例如我得到:
>echo $nodelist
node{1..3}
Run Code Online (Sandbox Code Playgroud) square-bracket ×10
bash ×3
javascript ×3
regex ×3
syntax ×2
callback ×1
comma ×1
conventions ×1
css ×1
database ×1
eclipse ×1
editor ×1
java ×1
jquery ×1
linux ×1
php ×1
shell ×1
sql-server ×1
string-split ×1