16.shell脚本编程(1)

    这些内容来自《linux命令行与shell脚本编程大全》,做一下笔记。

    bash脚本编程第一行需要写上一行特别的注释,让bash执行环境能够识别  

#!/bin/bash

    假如在你写好名叫a.sh的脚本后,此时你是无法用a.sh直接执行的,因为这个脚本对当前用户来说没有执行权限,所以你要修改权限u+x,此外这个脚本并没有在PATH环境下,你需要讲当前目录增加到PATH环境中。那么有没有简单的处理方法。当然是有的
xin@xin ~/test $ bash 1.sh 
    这样就能直接执行。

    写一个脚本叫a.sh

xin@xin ~/Test $ cat a.sh
#!/bin/bash
echo "当前时间: "
date
xin@xin ~/Test $ bash a.sh
当前时间: 
2016年 01月 07日 星期四 10:17:56 CST
    在我们习惯中我们会想让数据在同一行显示
xin@xin ~/Test $ cat a.sh
#!/bin/bash
echo -n "当前时间: "
date
xin@xin ~/Test $ bash a.sh 
当前时间: 2016年 01月 07日 星期四 10:35:47 CST
    环境变量:用来记录特定系统信息。可以使用set来查看所有的。

    用户变量:定义变量用来零时存储数据的。

    有时候我们需要将命令输出的内容保存到变量中,那么我们需要使用反引号。跟~同一个键。

xin@xin ~/Test $ testing=`date`
xin@xin ~/Test $ echo $testing
2016年 01月 07日 星期四 10:42:52 CST
    重定向输入输出。

    >   正确覆盖写到文件

    >>  正确追加写到文件

    2>  错误覆盖写文件

    2>> 错误追加写文件

    &>  不论正确错误都覆盖写

    &>> 不论错误还是正确都追加写

    输入重定向

    <   将一个文件读入,并进行处理

xin@xin ~/Test $ wc < date 
  8  38 352
    <<  内联输入重定向,允许你从命令行里输入
xin@xin ~/Test $ tr 'a-z' 'A-Z' >> c.txt << EOF
> 1234
> 5678
> aaaa
> bbbb
> EOF
xin@xin ~/Test $ cat c.txt 
1234
5678
AAAA
BBBB
    |  将一个命令的输出作为另一个命令的输入
xin@xin ~/Test $ date | wc
      1       6      43
    expr 允许在命令行上仔细整数运算,注意使用空格
xin@xin ~/Test $ expr 1 + 5
6
xin@xin ~/Test $ expr 1+5
1+5
xin@xin ~/Test $ expr 1 * 5
expr: syntax error
xin@xin ~/Test $ expr 1 \* 5
5
    除了使用expr以外还可以使用$[ 1 + 5 ]  
xin@xin ~/Test $ var=$[1 + 5]
xin@xin ~/Test $ var2=$[$var * 2]
xin@xin ~/Test $ echo $var2
12
    浮动运算的解决
xin@xin ~/Test $ bc 
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
3.44/5
0
scale=4
3.44/5
.6880
quit
xin@xin ~/Test $
   在脚本中使用浮点运算
xin@xin ~/Test $ bash a.sh
最后运算得到值为.6880
xin@xin ~/Test $ cat a.sh 
#!/bin/bash
var=`echo "scale=4; 3.44/5" | bc`
echo "最后运算得到值为$var"</span></span>
xin@xin ~/Test $ cat b.sh 
#!/bin/bash
var1=10.46
var2=43.67
var3=33.2
var4=71

var5=`bc << EOF
scale=4
a1= ( $var1 * $var2 )
b1= ( $var3 * $var4 )
a1 + b1
EOF`

echo 最后结果$var5
xin@xin ~/Test $ bash b.sh 
最后结果2813.9882
    脚本退出,通过$?可以获得脚本最后一个命令的执行状况

    0        命令成功结束

    1        通用未知错误

    2        误用shell命令

    126      命令不可执行

    127      没有找到命令

    128      无效退出参数

    128+x    Linux信号x的严重错误

    130      命令通过Ctrl+c终止

    255      退出状态码越界

    exit指定脚本中最后一个命令的退出码状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值