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

Linux进阶之bash编程三

2016-03-29 09:42 489 查看
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时即获取输入完毕,并将小写字母自动转换为大写字母输出。






输出重定向:命令 > 新增 >>追加
//将文件中的内容输出重定向保存到文件
[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之间有一个字符的行



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