shell脚本基础语法(1)
linux下的shell类似windows中的bat,都是脚本(script)文件.主要用于批处理操作。shell文件的编写格式如下:
- 第一行注明执行shell的路径,用
#!
开始。如#!/bin/bash
.(此项是必须项)。 - 第二行注明此shell需要完成的功能。(此项是可选项)。
- 使用字符
#
作为注释符。如# this is a shell example.
. - shell脚本的文件名后缀为
.sh
。
如编写一个文件名为test.sh
的shell脚本。
#!/bin/bash
# this is a shell example.
echo "hello word"
上面是最简单的一个shell脚本,一般在编写shell脚本时,会用到如下东西。
- 特殊符号。如
;
、*
、?
。 - 命令。因为shell脚本是命令的集合,所以编写过程中要用到各种命令,如
echo
、ls
、cd
。 - 重定向、管道。
- 变量。
- 条件测试。如判断一个文件是否为可读文件.
[-r ~/.profile]
. - 条件语句、循环语句等。如
if
、while
。
特殊符号
;
分行符。类似c语言中的;
标识一个命令结束。使用;
可以将多个命令写在一行中。如cd dir/subir;ls -al
.:
空命令。返回值为0.*
通配符,可以匹配任意多个字符。如ls abc*
.?
通配符,可以匹配任意一个字符。如ls a?c
.$
取值,通常配合变量使用。如$var
.''
shell不会单引号中的字符串,如echo "$var"
,则会$var
。""
shell会处理双引号中的字符串,如echo "$var"
,则会输出变量var的值。
内部命令和外部命令
对于shell的命令,可以分为内部命令
(eg:cd
)和外部命令
(eg:ls
).内部命令可以在命令行中使用命令help
查看。它俩的主要区别是当外部命令被调用时,其实就是调用了另外一个软件,shell会创建子进程,然后在子进程里执行这个软件。
输入输出重定向
>
输出重定向。它可以把标准输出的内容重定向到指定文件中,如果文件存在则覆盖,如果文件不存在则创建。如echo "hello word" > output.txt
。>>
也是输出重定向。与>
的区别是如果文件存在则追加写。<
输入重定向。用于将命令的标准输入重定向到一个文件。<<
输入重定向。一般用于Here Document
(一种特殊的重定向方式).它的作用是将两个定界符之间的内容传递给指定命令,所以常用于需要多行、复杂的文本输入。如下面的bash,其中EOF
为定界符。#!/bin/bash # shell write test echo "begin test" ls -al cat>hd_new.c<<EOF #include <stdio.h> void main(void){ printf("hello word"); } EOF
管道
管道符|
用于将前一条的标准输出内容传递给下一条命令的标准输入。管道的一个重要特征是管道符两边是不同的进程。eg: cat xxx.txt | grep hello
.
关于技术交流
此处后的文字已经和题目内容无关,可以不看。
qq群:825695030
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。