您的位置:首页 > 运维架构 > Shell

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

# 初始化一个变量
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: