我正在尝试在 bash 脚本中执行 cqlsh。我的脚本如下。当我尝试执行 sh 文件时,它返回 cql command not found
#!/bin/bash
set -x
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
cqlsh -e "SELECT * FROM msg.msg_log limit 1;" > /home/yunus/sh/cqlshcontrol.txt
error1=$( more /home/yunus/sh/cqlshcontrol.txt | wc -l )
if [ $error1 -lt 1 ]; then
curl -S -X POST --data "payload={\"text\": \" Cqlsh not responding, Connection Problem \",\"username\":\"Elevate Cassandra1\",\"icon_emoji\":\"${SLACK_ICON}\"}" https://hooks.slack.com/services/
fi
最佳答案
一些建议
- 使用
[[
/]]
而不是[
/]
。 $()
的返回值不是错误值,应命名为lines
或更有意义的名称。代码中缺少另一个错误变量使得附加数字(error1
中的1
)看起来更加奇怪。- 没有理由在子 shell 中使用
more
或管道。只需在您的文件上运行wc -l
。 - 您确定
cqlsh
在PATH
中吗?尝试which cqlsh
找到它。 wc
永远不会返回负值,因此比较与零的相等性将很清楚,并且涵盖了同样多的潜在情况。
否则
如果这不能让您摆脱困惑,请在您尝试运行它时显示输出。
关于linux - 在脚本中执行 cqlsh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47288962/