小编zhi*_*ong的帖子

如何将数组参数传递给Bash脚本

令我惊讶的是,我在1小时后找不到答案.我想将一个数组传递给我的脚本,如下所示:

test.sh argument1 array argument2
Run Code Online (Sandbox Code Playgroud)

我不想把它放在另一个bash脚本中,如下所示:

array=(a b c)
for i in "${array[@]}"
do
  test.sh argument1 $i argument2
done
Run Code Online (Sandbox Code Playgroud)

arrays bash arguments

29
推荐指数
3
解决办法
5万
查看次数

-bash: [: @: 预期的二元运算符

全部,

我正在检查最后一行文件中的错误信息,如果出现“错误”,我希望得到“是”结果。我的 shell 脚本如下所示:

[ $(tail -1 error.log | grep -E "Error") ] && echo "yes"
Run Code Online (Sandbox Code Playgroud)

然后我在标题中得到了类似上面的错误:

-bash: [: @: binary operator expected
Run Code Online (Sandbox Code Playgroud)

最后一行的错误信息如下:

[aaa,bbb,ccc, Error.ddd @ ]
Run Code Online (Sandbox Code Playgroud)

我认为这是因为错误消息,其中有 [@] 格式的内容导致了这个错误。但我不知道如何解决它。有没有人知道如何处理这个[@]问题。非常感谢

@csiu,非常感谢您的快速回复。

这里的技巧是使用双 "[" 如下:

 [[ $(tail -1 error.log | grep -E "Error") ]] && echo "yes"
Run Code Online (Sandbox Code Playgroud)

error-handling bash

5
推荐指数
2
解决办法
2万
查看次数

当只有一个元素存在时,python lxml会占用大量内存

所有,

我有一个巨大的xml文件,需要先检查root中"status"标记的值.与处理tag = item时相比,它甚至会占用内存的两倍.我不明白为什么.我在ubuntu 14.04中使用lxml版本2.3.2和python 2.7.3.xml的结构如下:

<root>
<status>s_value</status>
<count>c_value</count>
<items>
<item>***</item>
<item>***</item>
...
</items>
</root>
Run Code Online (Sandbox Code Playgroud)

我尝试按如下方式处理文件(忽略命名空间):

from lxml import etree
status = etree.iterparse('file.xml', tag='status')
for event, element in status:
    value = element.text
    element.clear()
del status
Run Code Online (Sandbox Code Playgroud)

这段代码仍然会占用大量内存,也需要很长时间(15秒).我尝试使用"break",它得到了相同的结果,但速度更快(1s),无法查看内存使用情况,因为速度很快.

from lxml import etree
status = etree.iterparse('file.xml', tag='status')
for event, element in status:
    value = element.text
    element.clear()
    break
del status
Run Code Online (Sandbox Code Playgroud)

在运行第一个状态后似乎发生了一些事情,但由于状态中只有一个元素,我想知道处理的是什么?任何人都知道发生了什么?非常感谢

python memory lxml

5
推荐指数
1
解决办法
118
查看次数

preg_match在php中无法正常工作

所有,

我使用preg_match来过滤一些数据,奇怪的是,它无法正常工作.我是regex的新手,我使用php live regex网站检查我的正则表达式,它正常工作.所以我不知道这里有什么问题.我想让preg_match在$ string中找到类似"a\_b"的内容:

$string="aaa\_bbb:ccc"
if(preg_match("/[a-zA-Z]\\_[a-zA-Z]/", $string)){
    $snew = str_replace('\_', "_", $string);
}
Run Code Online (Sandbox Code Playgroud)

但奇怪的是,即使我在上面这个例子中有一个$ string,preg_match的结果是0.但是当我把它改为

preg_match("/\\_[a-zA-Z]/", $string)
Run Code Online (Sandbox Code Playgroud)

它工作正常并返回1.但当然这不是我想要的.任何的想法?非常感谢〜

php regex

0
推荐指数
1
解决办法
163
查看次数

标签 统计

bash ×2

arguments ×1

arrays ×1

error-handling ×1

lxml ×1

memory ×1

php ×1

python ×1

regex ×1