shell是指一种应用程序,这个应用程序提供了一个界面,在用户和操作系统之间提供了交互接口。
shell有两种执行命令的方式:
交互式(Interactive):解释执行用户的命令,用户输入一条命令,shell就解释执行一条。
批处理(Batch):用户事先根据流程写一个shell脚本,其中内涵很多条命令,让shell一次把这些命令执行完,而不是一条条的敲上去。
一,变量
shell变量不需要进行任何声明,直接定义即可,习惯上变量名都用大写字母。
【注】定义变量的时候等号两边不能存在空格,否则会被认为是命令!
变量引用:
引用shell变量要用到\$符合,加{}可防止歧义。
二,命令置换
1)反引号',在两个“'”之间的文本将看做成命令执行。
2)\$(),使用\$(命令)符号替换‘command’语句。这种方法可以嵌套,就是可以在一个命令置换中使用命令置换。
三,常见的通配符
*:匹配0个或多个任意字符
?:匹配一个任意字符
3.单引号和双引号
Shell脚本中的单引号和双引号一样都是字符串的界定符,单引号用于保持引号内所有字符的字面值,而双引号有些情况则特殊。如果字符串中有特殊字符需要处理时就用双引号。
四,重定向和管道
Linux shell的一个强大的功能是,可以随机组合程序,解决不断出现的新问题。做到这点的主要方法是重定向和管道。
重定向可以获得在屏幕上显示内容,并把它存在文件里。同样,输入重定向可以用一个文件的内容代替需要从键盘输入的内容。
管道可以把命令串联在一起,把上一条命令的输出传给下一条命令的输入。所有的命令同时运行,同时处理数据。
【注】当把数据从一个程序传送到另外一个程序的时候,管道比重定向能更好的解决这个问题,使用管道不会产生临时文件。
五,shell应用
在Linux中有大量的Shell应用程序,脚本可以充分利用它们,例如awk,sed,grep等。
【实战经验】:
1:良好的开始,就是成功的一般,注意规范
【举个栗子】
2:如何解析XML文件参数?
【举个栗子】
如我们有如下配置文件shareeyes.xml
我们现在想拿到IP地址,端口号,温度,间隔时间,那么如何做呢?
3:如何提取特定的字符串?
【举个栗子】
4:如何判断当前进程是否已经在后台运行?
【举个栗子】
5:如何确定脚本中执行的命令是否执行成功?
【举个栗子】
6:如何通过日志做记录
【举个栗子】
7:如果解析通过Http请求获取的网页数据内容
【举个栗子】
curl命令是一个利用URL规则在命令行下工作的文件传输工具,做网页处理流程和数据检索自动化,curl可以祝一臂之力。
先简单记录到此!