适用于桌面以及嵌入式 Linux 环境脚本编程。
1. 串口操作
配置串口模式(波特率 9600, 数据位 8 位,停止位 1 位,无校验):
1
|
stty -F /dev/ttyS0 9600 cs8 -cstopb -parenb
|
具体可以通过 man stty
来了解其他配置。
按行读取串口文本:
1
2
3
4
5
|
cat /dev/ttyS0 | while read line
do
# do somehing with $line
echo "$line"
done
|
2. 数值操作
整数变量累加可以参考以下示范:
1
2
3
4
5
|
count=0
echo $count # => 1
let count+=1
echo $count # => 2
|
计算平均数可以参考以下示范:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 计算数值列平均数
# 文件 data.txt 存放如下文本
# 31 41 59
# 26 53 58
# 97 93 23
#
# 过滤空行
data=$(cat data.txt | sed '/^\s*$/d')
# 计算列和 以及 列平均数
echo "$data" | awk '{ c1+=$1; c2+=$2; c3+=$3 } END { printf "sum=%d, %d, %d\navg=%f, %f, %f\n", c1, c2, c3, c1/NR, c2/NR, c3/NR}'
# => sum=154, 187, 140
# avg=51.333333, 62.333333, 46.666667
|
3. 字符串处理
字符串变量使用时尽量用双引号包含起来。
去除空白符(Strip Whitespace):
1
2
3
|
a=" ab cde fg "
a=$(echo "$a" | xargs)
echo "^$a$" # => ^ab cde fg$
|
字符串判断:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
empty=""
ok="ok"
hello="hello"
# 判断字符串为空
if [ -z "$empty" ]; then
echo "Empty String"
fi
# => Empty String
# 判断字符串非空
if [ -n "$hello" ]; then
echo "Non-empty String"
fi
# => Non-empty String
# 判断字符串相等
if [ "$ok" = "ok" ]; then
echo "OK"
else
echo "FAIL"
fi
# => OK
# 判断字符串不等
if [ "$ok" != "ok" ]; then
echo "Not Same"
else
echo "Same"
fi
# => Same
|