Shell脚本(一)

1.    简介

shell(壳)是linux系统中用于将用户执行的命令解析成计算机能够执行的代码,然后交给内核由内核进行执行。通过/etc/shells文件中可以查看该linux系统所支持的shell种类。

shell脚本就是将平时写的一些命令按一定顺序保存到文件中,然后在赋予该文件执行权限就是一个shell脚本。

2.    shell脚本的格式

[root@linux-03 ~]# vi shell.sh            //使用vi编辑器进行编写shell脚本
#!/bin/bash                                        //指定所指定的那种shell
#this is a test shell scripts                //对该脚本的说明
x=1
echo $x                                        //为该脚本的内容

3.    shell脚本的有以下几种执行方式

1)    [root@linux-03 ~]# sh shell.sh
       1
2)    [root@linux-03 ~]# . shell.sh
       1

3)    [root@linux-03 ~]# source shell.sh
       1

4)    [root@linux-03 ~]# ./shell.sh            
        -bash: ./shell.sh: 权限不够
        [root@linux-03 ~]# chmod a+x ./shell.sh
        [root@linux-03 ~]# ./shell.sh                    //直接执行需要给该文件授予执行权限
        1
4.    linux在处理数据时有下面几种交互设备文件

标准输入(STDIN)  文件设备编号为 0

标准输出(STDOUT)    文件设备编号为 1

标准错误(STDERR)    文件编号为 2

5.    重定向

重定向:如原本将标准输出的数据显示到屏幕,但是通过重定向“>”符号将标准数据的文件传送到指定的文件中。

[root@linux-03 ~]# cat ./shell.sh > cdx.txt                        //大于号表示标准输出
[root@linux-03 ~]# cat cdx.txt                
#!/bin/bash
#this is a test shell scripts
x=1
echo $x

[root@linux-03 ~]# ls -l /jjj 2> stderr.txt                        //通过文件编号2将上重定向符号将错误信息导入到指定文件中
[root@linux-03 ~]# cat stderr.txt
ls: 无法访问/jjj: 没有那个文件或目录
[root@linux-03 ~]# echo "abc123" > passwd.txt
[root@linux-03 ~]# passwd --stdin test < passwd.txt    //通过通过小于号将秘钥导入到test账号中

6.    管道符号

可以将前一个命令的值作为后一个命令的参数,可以对该值进行连续操作。

[root@linux-03 ~]# ifconfig eth0 | grep "HWaddr" | awk ‘{print $5}‘
00:0C:29:3A:A0:9A
7.    shell变量

shell变量有下列几种变量:1.自定义变量    2.环境变量    3.位置变量    4.预定义变量

1)    自定义变量,用户可以直接赋值

[root@linux-03 ~]# a=1                    //直接给a赋值为1
[root@linux-03 ~]# echo $a
1

2)    变量和赋值使用的特殊符号

双引号""当赋值的时候有空格时需要通过双引号指定为一个整体

[root@linux-03 ~]# b="abc def"
[root@linux-03 ~]# echo $b
abc def

单引号赋值的时候有特殊字符时,需要通过单引号将括号中的特殊变成普通字符[root@linux-03 ~]# [root@linux-03 ~]# d=‘$abc‘                
[root@linux-03 ~]# echo $d
$abc
反撇号和“$()”可以对括号中的语句先执行

[root@linux-03 ~]# rpm -qf $(which cat)
coreutils-8.4-19.el6.i686
[root@linux-03 ~]# rpm -qf `which cat`
coreutils-8.4-19.el6.i686

3)    位置变量

他根据参数的位置分为$1,$2,$3......$9,$0为命令的变量。

[root@linux-03 ~]# vi expr.sh
#!/bin/bash
#express scripts
expr $1 + $2                //指定$1和$2

[root@linux-03 ~]# sh expr.sh 12 23      //给$1和$2赋值
35                    //计算结果

4)        预定义变量

$?:查看上一个命令执行的状态,如果值为0 表示命令执行完成。如果值为非0 表示上一个命令执行时有问题

$0:表示当前执行的脚本或程序的名称。

$#: 表示命令行中位置参数的个数

$*:表示所有位置参数的内容

本文出自 “知识是智慧的火炬” 博客,转载请与作者联系!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。