linux 脚本运行报错 无法找到字符串
#!/bin/bash
pids=`lsof -i:9090|awk '{if(NR!=1&&$10=="(CLOSE_WAIT)")print $2}'`
listen=`lsof -i:9090|awk '{if(NR!=1&&$10=="(LISTEN)")print $2}'`
echo $pids
echo $listen
if [$pids];
then
for pid in $pids
do
echo "kill process $pid"
kill -9 $pid
done
elif [$listen];
then
echo "asdasdas"
echo "$listen already processing"
else
/bin/java -cp "/root/BOOT-INF/classes:/root/BOOT-INF/lib/*" com.spider.unidbgserver.UnidbgServerApplication
echo "start process"
fi
运行脚本后如下
root@center1:~# sh unidbg_new.sh
25511
unidbg_new.sh: 6: unidbg_new.sh: []: not found
unidbg_new.sh: 14: unidbg_new.sh: 1: not found
为啥这个字符串[$pids] 和[$listen] 总是找不到呢?求解
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
建议重学 shell
if
关键字后跟命令[
是test
命令的别名注意,他是一个命令
也就是说后面的什么
$pids
啊,=
啊,甚至]
都是[
的参数所以你得用空格隔开他们
另外你得给
[
里面的变量加双引号,要么用[[ ]]
你细品这个报错信息
当
$listen
为空,[ $listen ]
就变成[ ]
,就爆炸了那用
[ "$listen" ]
的话,即使$listen
为空,[ "" ]
也是合法的综上,