嵌入式成长轨迹2【嵌入式环境及基础】【嵌入式Linux软件开发入门】【Shell脚本基础】

【Shell常用命令讲解】
一、命令替换
echo "The date is `date`"  在单个命令行中使用多个命令
$ expr 4 + 5               该命令的输出作为标准输出,用于求值算术表达式,注意4后5前都有空格,否则会考虑为字符串
$((expression))            同样功能,不会考虑为字符串


echo                   输出
echo $变量             输出变量对应的值
read +变量             接下来的输入赋予变量
其中打入-n表示不换行(注意,是不换行)

二、条件执行
test和 [ ] 两个命令都为表达式求值,返回布尔值

1、[]前后都应有空格

2、test
test也可以用于字符串状态、检查文件状态(是否存在)
test + (以下:)
1)数值测试
-eq ==
-ne !=
-gt >
-ge >=
-lt <
-le <=
2)字符串测试
=、!=
-z + 字符串 字符串是否长度为零
-n + 字符串 字符串是否长度非零
3)文件测试
-e + 文件 是否存在
-r + 文件 是否存在且可读
-w + 文件 是否存在且可写
-x + 文件 是否存在且可执行
-s + 文件 是否存在且至少有一个字符
-d + 文件 是否存在且为目录
-f + 文件 是否存在且为普通文件
-c + 文件 是否存在且为字符特殊文件
-b + 文件 是否存在且为块特殊文件
文件测试中的连接符
并且 -a
或者 -o
非 !

三、if……fi结构
if[]
 then ……
elif []
 then ……
 else ……
fi

四、case……esac结构
使用这个构造依据变量的值执行一组特定指令
case $变量 in
值1)echo “”;;
值2)echo “”;;
*)echo“”;;
esac
双分号有break直接跳出此结构的功能

五、循环
1、while构造

while <条件>
do
 <各种命令>
done


2、until构造
求值模式与while相反,将执行直到求值条件为真
执行最少一次

3、for构造
for 变量名 in 值列表
do……
done

其中,break和continue也可使用

命令+>>+文件 将命令结果重定向到文件

六、控制进程的执行
用于请求后台进程的符号&
$ wc tempfile &
[1] 2082
$ vi newfile

七、后台进程
1、检查后台进程
Ps 在进程状态为每个当前活动的每个进程产生一行入口(代号)

2、终止后台进程
$ kill 278

八、查看完成一个命令所花的时间——time
$ time find /etc -name "passwd" 2> /dev/null
重定向到/dev/null把错误信息忽略掉

九、管道的介绍
| 是管道符号
它指示shell:
|前面的命令的输出作为|之后的命令输入发送

如:
ls -l | more
分页显示 查看详细信息


【demo代码】

一、

The First Shell!

1 echo "please enter your name:"
2
3 read fname
4
5 echo ${fname}
6
7 s=xxx
8
9 echo $s



#对应终端操作
[root@localhost ~]# ls -l
First.sh
-rw-r--r-- 1 root root 6 02-21 19:02 First.sh

[root@localhost ~]# ./First.sh

bash:
./First.sh: 权限不够

[root@localhost ~]# chmod a+x First.sh

[root@localhost ~]# ls -l
 First.sh
-rwxr-xr-x 1 root root 6 02-21 19:02 First.sh
[root@localhost ~]# ./First.sh

please enter your name:

mood

mood

xxx

[root@localhost ~]# vi First.sh

[root@localhost ~]# echo $HOME
 
/root

[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

[root@localhost ~]# vi /etc/profile

在里边进行改动,添加当前路径.作为PATH其中之一,重启动即可直接访问当前目录下的文件无须加./

二、


# CallCenter.sh

1 #!/bin/bash
2
3 echo "Please enter Total number:"
4 read total
5 echo "Please enter resolve number:"
6 read res
7 echo $((total-res))


 

三、

# Avg.sh

 1 echo "Please enter score:"
2 read score
3 if [ $score -lt 80 ]
4 then
5 echo "Bad!"
6 elif [ $score -ge 80 -a -lt 90 ]
7
8 then
9 echo "Good!!"
10 else
11 echo "Very Good!!"
12
13 fi
原文地址:https://www.cnblogs.com/zeedmood/p/2363633.html