适用于桌面以及嵌入式 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