嵌入式成长轨迹2【嵌入式环境及基础】【嵌入式Linux软件开发入门】【Shell脚本基础】
2012-02-22 18:53
1116 查看
【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!
#对应终端操作
[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
三、
# Avg.sh
一、命令替换
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!
echo "please enter your name:" read fname echo ${fname} s=xxx 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
#!/bin/bash echo "Please enter Total number:" read total echo "Please enter resolve number:" read res echo $((total-res))
三、
# Avg.sh
echo "Please enter score:" read score if [ $score -lt 80 ] then echo "Bad!" elif [ $score -ge 80 -a -lt 90 ] then echo "Good!!" else echo "Very Good!!" fi
相关文章推荐
- 嵌入式成长轨迹4【嵌入式环境及基础】【嵌入式Linux软件开发入门】【Shell简介】
- 嵌入式成长轨迹5 【嵌入式环境及基础】【嵌入式Linux软件开发入门】【变量和运算符】
- 嵌入式成长轨迹1 【嵌入式环境及基础】【嵌入式Linux软件开发入门】【linux基础命令】
- 嵌入式成长轨迹3 【嵌入式环境及基础】【嵌入式Linux软件开发入门】【VI编辑器的使用】
- 嵌入式成长轨迹14 【嵌入式环境及基础】【Linux下的C编程 上】【gcc、gdb和GNU Make】
- 嵌入式成长轨迹10 【嵌入式环境及基础】【Linux shell强化】【脚本参数传递】
- 嵌入式成长轨迹6 【嵌入式环境及基础】【Linux shell强化】【Shell输入输出】
- 嵌入式成长轨迹12 【嵌入式环境及基础】【Linux shell深入】【shell工具】
- 嵌入式开发之linux基础第七天学习笔记 shell脚本编程(二)
- 嵌入式成长轨迹13 【嵌入式环境及基础】【Linux shell深入】【运行级别脚本介绍】
- 嵌入式开发之linux基础第六天学习笔记 shell脚本编程(一)
- 嵌入式成长轨迹15 【嵌入式环境及基础】【中嵌第一阶段(Linux系统基础)】【设备管理】
- 用 ubuntu 做Linux/eCos嵌入式开发环境需要安装的软件列表
- 嵌入式linux开发十分钟入门之EzEmbedded开发环境
- s3c2440硬件学习笔记----嵌入式Linux基础知识和开发环境的构建
- Linux简单入门(十二)shell脚本之前的基础知识
- 开发环境入门 linux基础 (部分) 归档 压缩 Vi编译器 系统分区
- 嵌入式成长轨迹32【嵌入式学习阶段】【ARM环境调试】【Linux Ubuntu其它环境调试】
- 开发环境入门 linux基础 (部分)while for 函数 计划任务
- 嵌入式成长轨迹8 【嵌入式环境及基础】【Linux shell强化】【文本过滤】