Shell入门

来源:互联网 发布:天音淘宝工具 编辑:程序博客网 时间:2024/04/29 20:46

一 Shell入门

Shell:命令解释器,识别用户输入的各种命令,传递给操作系统。作用类似于windows中的命令行,但shell比命令行更强大。在linux中,shell既是用户交互的界面,也是控制系统的脚本语言。

1.1shell执行两种方式

1:依次输入一系列命令,交互式的执行

[root@linux ~]# for filename in `ls .`

> do

> if echo "$filename" | grep"xml"

> then

> echo "$filename"

> fi

> done

2:将这些命令按顺序保存在一个文件夹中,作为一个程序执行

#! /bin/sh

#for循环开始

for filename in `ls .`

do

#如果文件名包含xml

ifecho "$filename" | grep "xml"

 then

 #输出文件名

 echo "$filename"

  fi

done

上述的例子都是在当前目录中查找文件名包含“xml”的文件,在平幕上打印出来。第一个是一行一行的敲命令,但每次都要重新输入,一般都是用第二种方式,写入文件作为一个程序执行。

1.2脚本设置权限

可通过ls –l命令查看文件访问权限,一共6列,第一列为文件访问权限。

访问权限由9位组成

前三位:文件所有者对该文件的访问权限

中间三位:所有者同组的其他用户对该文件的访问权限

后三位:其他组用户对该文件的访问权限

每一组都用三个字母表示不同权限,r读权限,w写权限,x执行权限

数字模式下,4读权限,2写权限,1执行权限

指定执行权限授予的对象,u文件所有者,g所有者所属的组,o其他组用户,授予权限时,“+”表示授予权限,“-”表示收回权限

通过chmod[options] filename来赋予文件的权限

Chmod u+x ex1-2.sh   赋予ex1-2.sh文件所有者执行权限

也可以用数字表示

Chmod 744 ex1-2.sh

(7表示访问权限那列4+2+1,4表示所有者同组的其他用户读权限,4表示其他组用户读权限)

注:777是一个特殊权限,表示所有用户都可以享有读写执行权限,这样会带来完全隐患。

1.3脚本参数

$n:表示传递给脚本的第n个参数,如$1表示第一个参数

$#:命令行参数的个数

$0:当前脚本名称

$*:以“参数1参数2….”形式返回所有参数的值

$@:以“参数1”“参数2”形式返回所有参数的值

$_:保存之前执行的命令的最后一个参数

注意:包含空格或其他特殊字符,要适应单引号或双引号传递

           参数中包含空格或其他字符,要用$@获取所有参数的值,不能用$*

           参数间用空格,制表符隔开,默认空格  

           若参数多于9个,不能用$10来引用低十个参数,必须处理或保存第一个参数,然后用shift命令删除参数1,并将所有参数下移一位,此生$10变成$9

例:

#! /bin/bash

echo "$# parameters"

echo "$@"

执行:./ex1-3.sha “b c”

结果:2parameters

     a b c

(参数1:a,参数2:”b c”(包含空格,用双引号括起来,返回时用$@))

1.4 第一个shell:helloworld

#! /bin/bash

#输出字符串

echo "Hello, Bash Shell!"

权限:chmod +xex1-5.sh

执行:./ex1-5.sh

结果:Hello ,BashShell!

基本组成:

1#/bin/bash

作用:告诉当前shell,应调用哪个shell执行当前shell。#!后面指定了解释器的绝对路径

 

2:注释,说明代码功能

Shell值支持单行注释,#,实现多行注释方法:

:<<BLOCK

   注释内容

BlOCK

例如:

#! /bin/sh

 

:<<BLOCK

本脚本的作用是输出一行字符串

作者:chunxiao

BLOCK

echo "Hello world!"

3:可执行语句,实现功能

三种方式:

(1)       直接授予权限后执行,./ex1-7.sh

(2)       调用shell脚本解释器执行

/bin/bsahex1-7.sh

(3)  source命令执行

   Source命令是Shell内部命令,功能是读取指定的shell程序文件,一次执行其中所有语句。

Source ex1-7.sh

1.5 shell程序退出状态

在UNIX或Linux中,每个命令都返回一个退出码状态,为整数,范围0-255

程序的退出状态非常重要,反应了脚本执行是否成功,用户可以根据脚本执行的状态决定下一步的操作。

一般,成功命令返回0,不成功命令返回非0值(被解释成一个错误码)

Shell脚本或脚本函数中执行的最后命令会决定退出状态码,也可以使用exit语句将指定的退出状态码传递给shell。$?保存了最后一条命令的退出状态。

#!/bin/sh

echo "hello world"

#退出状态为0, 因为命令执行成功. 

echo $?   //上面echo语句正常,成功,所有返回0,此项为0

#无效命令.

abc

#非零的退出状态, 因为命令执行失败.

echo $?   // abc为无效命令,不成功,返回非0

echo     //正常echo语句,退出状态为0

#返回120退出状态给shell. 

exit 120       //退出状态码120返回给shell,通过echo $0? 可得结果 120


0 0
原创粉丝点击