Bash脚本与指南(一)--概念及特殊字符
2017-12-03 23:19
267 查看
Bash(GNU Bourne-Again Shell)是一个为GNU计划编写的Unix shell,它是许多Linux平台默认使用的shell。
shell是一个命令解释器,是介于操作系统内核与用户之间的一个绝缘层。准确地说,它也是能力很强的计算机语言,被称为解释性语言或脚本语言。它可以通过将系统调用、公共程序、工具和编译过的二进制程序”粘合“在一起来建立应用,这是大多数脚本语言的共同特征,所以有时候脚本语言又叫做“胶水语言”
事实上,所有的UNIX命令和工具再加上公共程序,对于shell脚本来说,都是可调用的。Shell脚本对于管理系统任务和其它的重复工作的例程来说,表现的非常好,根本不需要那些华而不实的成熟紧凑的编译型程序语言。
通过脚本清除指定文件夹/var/log下的log文件:
注:#!/bin/bash这一行是表示使用/bin/bash作为脚本的解释器,这行要放在脚本的行首并且不要省略
“#”为注释
. 等价与source ,用于在当前 bash 环境下读取并执行 FileName.sh 中的命令
“”阻止大部分特殊字符的解释
‘’阻止所有特殊字符的解释
;命令分隔符,使用它可以在一行写两个命令
;;可以终止case选项,如下:
执行输出为:
` 反引号的命令会优先执行
: 空命令,什么也不干,和true相等,与重定向操作符>一起使用。表示清空这个文件但不会修改权限,如果该文件夹不存在就创建它
$变量替代符:
执行输出为:
var
5
() 1.作为在括号中的命令列表,将会作为一个子 shell 来运行,在括号中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的。父进程,也就是脚本本身,将不能够读取在子进程中创建的变量,也就是在子shell 中创建的变量
2.初始化一个数组
{} 1.文件名扩展
[] 1.条件测试 2.数组元素(和java类似)
> 左边内容重定向覆盖右边文件
>> 左边内容重定向追加右边文件
| 分析前边命令的输出,并将输出作为后边命令的输入。这是一种产生命令链的好方法
比如我们常用的 ps -ef|grep java
shell是一个命令解释器,是介于操作系统内核与用户之间的一个绝缘层。准确地说,它也是能力很强的计算机语言,被称为解释性语言或脚本语言。它可以通过将系统调用、公共程序、工具和编译过的二进制程序”粘合“在一起来建立应用,这是大多数脚本语言的共同特征,所以有时候脚本语言又叫做“胶水语言”
事实上,所有的UNIX命令和工具再加上公共程序,对于shell脚本来说,都是可调用的。Shell脚本对于管理系统任务和其它的重复工作的例程来说,表现的非常好,根本不需要那些华而不实的成熟紧凑的编译型程序语言。
通过脚本清除指定文件夹/var/log下的log文件:
#!/bin/bash # 初始化一个变量 LOG_DIR=/var/log #进入到一个目录 cd $LOG_DIR #将/dev/null 黑洞定义到 log文件 cat /dev/null > log #输出提示 echo "Logs cleaned up." exit
注:#!/bin/bash这一行是表示使用/bin/bash作为脚本的解释器,这行要放在脚本的行首并且不要省略
“#”为注释
. 等价与source ,用于在当前 bash 环境下读取并执行 FileName.sh 中的命令
“”阻止大部分特殊字符的解释
‘’阻止所有特殊字符的解释
;命令分隔符,使用它可以在一行写两个命令
;;可以终止case选项,如下:
#!/bin/bash varname=b case "$varname" in [a-z]) echo "abc";; [0-9]) echo "123";; esac
执行输出为:
$ bash test3.sh abc
` 反引号的命令会优先执行
: 空命令,什么也不干,和true相等,与重定向操作符>一起使用。表示清空这个文件但不会修改权限,如果该文件夹不存在就创建它
$变量替代符:
#!/bin/bash var =1 echo var echo $var
执行输出为:
var
5
() 1.作为在括号中的命令列表,将会作为一个子 shell 来运行,在括号中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的。父进程,也就是脚本本身,将不能够读取在子进程中创建的变量,也就是在子shell 中创建的变量
2.初始化一个数组
{} 1.文件名扩展
#!/bin/bash #复制t.txt到t.back if [ ! -w 't.txt' ]; then touch t.txt fi echo 'test text' >> t.txt cp t.{txt,back}
2.代码块,又被称为内部组,这个结构事实上创建了一个匿名函数,但其中声明的变量对于脚本其它部分代码可见,和()不同
[] 1.条件测试 2.数组元素(和java类似)
> 左边内容重定向覆盖右边文件
>> 左边内容重定向追加右边文件
| 分析前边命令的输出,并将输出作为后边命令的输入。这是一种产生命令链的好方法
比如我们常用的 ps -ef|grep java
相关文章推荐
- bash脚本中的一些特殊字符的用法
- bash中的特殊字符
- Bash 中的特殊字符大全
- Bash Shell 中的特殊字符
- Shell 脚本中的特殊字符
- Linux Bash Shell学习(三):基本I/O操作、特殊字符、控制键和帮助
- 高级bash脚本指南(2)――笔记
- Bash中的特殊字符
- shell bash 脚本特殊变量
- Bash学习笔记(2)----bash中的特殊字符
- BAT脚本编写要点(1)_特殊字符
- 玩转Bash脚本:特殊变量
- bash 中各特殊字符的含义
- FusionCharts Free中文开发指南 第十二章--FCF中的特殊字符
- Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍
- 【转】C# 过滤HTML,脚本,数据库关键字,特殊字符
- C# 过滤HTML,脚本,数据库关键字,特殊字符
- shell脚本变量特殊字符的含义
- (转载)Bash 中的特殊字符大全
- shell脚本中28个特殊字符的作用简明总结