shell脚本记录

所谓脚本其实就是短小的、用来让计算机自动化完成一系列工作的程序,这类程序可以用文本编辑器修改,不需要编译,通常是解释运行的。

一般新安装的centos镜像是不带vim的,可以启动容器,进行安装

#安装vim
apt-get update && apt-get -y install vim

初次体验

#创建一个test脚本
touch test.sh && vim test.sh
#! 是一个约定的标记,它告诉系统这个脚本用什么解释器来执行,即使用哪一种 Shell。
#!/bin/bash
echo "Helloworld!"
执行shell脚本的方法:
1、给文件赋予执行权限,然后执行
chmod +x test.sh
2、直接运行解释器,shell脚本里不需要再指定解释器信息
/bin/bash test.sh

执行./test.sh     ./ 是告诉系统就在当前目录找,否则会去Path里找,而path里只存在少数几个bin目录;

执行后输出Helloworld,至此第一个shell完成。

变量

新建一个脚本first.sh

#!/bin/bash
your_name="changhf"
greeting="Hello,$yourname!"
echo $greeting

使用变量可以通过$your_name或者${your_name},可以在" "中使用;变量赋值时,=的两边不能有空格。

参数传递

新建second.sh

#!/bin/bash
echo "执行的文件名:$0";
echo "第一个参数为:$1";

$0表示文件名,输入./second.sh "param1"即可,可以传递多个参数

运算符

原生bash不支持简单的数学运算,但是可以通过expr等命令实现;条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。

注意:

1、表达式和运算符之间要有空格;

2、完整的表达式要被 ` ` 包含
运算符包括:算数运算符、关系运算符、逻辑运算符、布尔运算符、字符串运算符等。

#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"

常用流程控制:

if then fi
if then else fi
if then elif then fi

新建脚本math.sh

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

脚本引入

一个脚本文件中引入另一个文件,是很常用的。方法如下:

#可以为相对路径或绝对路径
source first.sh

test1.sh 

#!/bin/bash
url="what's your name?"

test2.sh 


#!/bin/bash
#引入外部脚本文件
source test1.sh
echo "路径为:$url"

输出:路径为:what's your name?

### 处理方法 处理鼠标离开指定窗口客户区,通常要在窗口的鼠标移动消息处理函数里调用`TrackMouseEvent`函数,以此来请求系统在鼠标离开窗口时发送`WM_MOUSELEAVE`消息。以下是示例代码: ```cpp // 设置一个状态量用于记录和标识鼠标是否在窗口内 BOOL m_bMouseTracking; // 处理鼠标移动消息 void CXXXDlg::OnMouseMove(UINT nFlags, CPoint point) { // 接收到WM_MOUSEMOVE,而m_bMouseTracking为假时,鼠标进入窗口。 // 设置_TrackMouseEvent TRACKMOUSEEVENT tme; tme.cbSize = sizeof(TRACKMOUSEEVENT); // 监控鼠标离开 tme.dwFlags = TME_LEAVE; tme.hwndTrack = this->m_hWnd; if (::_TrackMouseEvent(&tme)) { m_bMouseTracking = TRUE; // 其他鼠标进入时的操作 } CDialog::OnMouseMove(nFlags, point); } // 处理WM_MOUSELEAVE消息 LRESULT CXXXDlg::OnMouseLeave(WPARAM wParam, LPARAM lParam) { m_bMouseTracking = FALSE; // 处理鼠标离开时的操作 return 0; } ``` 在上述代码中,`OnMouseMove`函数里调用`TrackMouseEvent`函数,请求系统在鼠标离开窗口时发送`WM_MOUSELEAVE`消息。当收到`WM_MOUSELEAVE`消息时,会调用`OnMouseLeave`函数处理鼠标离开的操作。 ### 原理 `TrackMouseEvent`是Windows API函数,可用于跟踪鼠标的特定事件,如鼠标离开窗口、鼠标在窗口内停留等。调用`TrackMouseEvent`时,需要传入一个`TRACKMOUSEEVENT`结构体,该结构体包含了跟踪鼠标事件的相关信息,如跟踪的窗口句柄、跟踪的事件类型等。当设置`dwFlags`为`TME_LEAVE`时,系统会在鼠标离开指定窗口客户区时发送`WM_MOUSELEAVE`消息。需要注意的是,每调用一次`TrackMouseEvent`,窗口只能收到一次`WM_MOUSELEAVE`消息。若要持续监控鼠标离开事件,当鼠标重新进入窗口时,必须再次调用`TrackMouseEvent` [^1][^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值