我已经尝试了几种方法。当我只执行“ ls”或其他命令时,我得到正确的结果。仅使用zgrep / grep不能正常工作。脚本在第四个回显之后停止。因此,看来grep命令有任何问题,但我不知道该怎么办。
for node in $(echo $nodes | sed "s/,/ /g")
do
echo "############################"
echo "Searching in Node: $node"
echo "Searching in file(s) of pattern: $FILENAME"
echo "Searching for string: $SEARCH_STRING"
OUT=$(ssh -t -v $user@$node "cd $TESA_LOG_DIR; zgrep $SEARCH_STRING $FILENAME")
echo $OUT
done
答案 0 :(得分:2)
我们不知道这些变量设置为什么;但是传入空的搜索字符串或文件名将产生您所描述的症状。
实际上,正确地引用变量可以修复此症状并提高鲁棒性,尽管显然我们不知道是什么原因导致这些变量最初为空。
此外,您应避免使用大写的变量名,因为这些变量名仅供系统使用。
这里是重构,希望可以帮助您找到根本原因并解决某些样式问题。我添加了一些嵌入式注释。
# This is still problematic.
# How is $nodes initialized?
# Maybe use an array instead
for node in $(echo "$nodes" | sed "s/,/ /g")
do
# Massive verbosity removed
# Avoid useless variable
# Avoid cd
ssh -t -v "$user@$node" zgrep "$SEARCH_STRING" "$TESA_LOG_DIR/$FILENAME"
done