Linux进阶之bash编程三

1:一个简单的bash脚本

----------------------------------------

创建一个bash脚本,完成目录的创建,文件的创建,文件名为当前时间,拷贝文件进来,释放变量内存空间

[craft@vmaep ~]$vi bash1.sh

#!/bin/bash

DESTDIR='/home/craft/'

mkdir $DESTDIR

touch $DESTDIR/file-`date +%F-%H-%M-%S`

cp -r /etc/  $DESTDIR

unset DESTDIR 

-----------------------------------------

 2:输入输出重定向 

输入重定向:命令 <   fiile

                         命令<< EOF    文档结束标示,碰到有输入EOF即结束。

//输入重定向从文件读取内容并将小写字母改为大写并显示

[craft@vmaep ~]$tr 'a-z' 'A-Z'< /etc/passwd 

//如下为:从键盘获得输入,当输入EOF时即获取输入完毕,并将小写字母自动转换为大写字母输出。

Linux进阶之bash编程三_第1张图片

 

输出重定向:命令 > 新增   >>追加

//将文件中的内容输出重定向保存到文件

[craft@vmaep ~]$cat /etc/passwd  >>/home/craft/passwd

 3:正则表达式

.  :匹配任意单个字符-c.u:cpu,cuu

[ ]:匹配指定范围的字符-[a-z]:a,b,c

[^]:匹配非指定范围的字符-[^1-9]:0

*:匹配其前的字符0,1或多次-ab*c:ac,abc,abbc

?:匹配其前的字符0或1次-ab?:a,ab

[:space:]:空白字符

[:punct:]:标点符号

\<:锚定词首:\<r..t 

\>:锚定词尾:\>r..t

^:行首:^root

$:行尾:root$

练习:

 a:显示文件/proc/cpuinfo中包含c和u且c和u之间有一个字符的行

Linux进阶之bash编程三_第2张图片

b:显示文件/etc/passwd中以root开头或者root前有任意多个标点开头的行

 

 

3:bash算术运算

+,-,*,/,%,++,--
A++;

++A;

declare -i sum;定义一个整型变量

let:let+算式

bc:浮点计算,精度计算

$()=` `:反引号,命令替换,将命令执行结果输出

" ":原始内容输出

| :管道符,将前一个输出结果传输到后面的命令中执行


 [craft@vp143 ~]$ tmp=10
[craft@vp143 ~]$ echo "scale=2;$tmp/3"|bc
3.33

4:逻辑运算
 &&:与

  | |:或

//两条命令,一假&&一真为假,第二条命令不执行

[craft@vp143 ~]$ lss /etc && echo "hello"
-bash: lss: command not found

//两条命令,一假||一真为真,第二条命令执行
[craft@vp143 ~]$ lss /etc || echo "hello"
-bash: lss: command not found
hello

 

你可能感兴趣的:(linux,shell,脚本)