shell传递参数

    在编写脚本时,要注意参数的形式和传递方式,我们今天就一起来学习一下:

shell的环境变量

shell的环境变量分为可写的可读的和环境变量两大类:

1、可写的环境变量

    可以对它们赋值,大部分可写的shell环境变量都在登录过程中执行“/etc/profile”文件时进行初始化。改文件由系统管理员设置,用于为系统上的所有用户建立一个公共环境。

    用户也可以通过修改自己的启动文件“.bash_profile”中的部分或所有变量的值来定制自己的运行环境,新建用户账号时,系统会为每一个用户都建立一个“.bash_profile”文件,每次用户登录时都要执行它。表中列出大部分可以修改的shell环境变量:

环境变量

含义

CDPATH

包含一系列目录名;如果该变量未设置,cd命令将搜索当前目录

ENV

UNIX/Linux查找配置文件的路径

HOME

用户初次登录时的起始目录名

MAIL

用户的系统邮箱文件的名称

MAILCHECK

Shell检查用户邮箱并通知用户的间隔时间(单位为秒)

PATH

包含用户搜索路径的变量

PPID

父进程的进程ID

PS1

命令行上的Shell提示符,普通用户是“$”,管理员是“#”

PS2

如果Shell认为一个命令尚未结束,会在第二行显示提示符提示继续输入

PWD

当前工作目录的名称

TERM

用户控制终端的类型

    例如:执行显示系统提示符环境变量的值

    [root@localhost ~]# echo $PS1

    [\u@\h \W]\$

    注意:环境变量一般都是大写的,若要修改,直接用赋值的方式就可以。

    2、只读的shell环境变量

    只读的环境变量意味着用户能使用和读取它们的值,但不能修改。它也分为两类:

   (1)特殊的环境变量

        指系统预先定义好的,用户不能重新设置,常见的只读环境变量如下表:

环境变量

含义

$0

Shell程序名

$1-$9

第1个至第9个命令行参数的值

$*

所有命令行参数的值

$#/$@

命令行参数的总数

$$

当前进程的进程ID(PID)

$?

最后执行的一条命令的退出状态,0为成功,非0为失败

$!

在后台运行的最后一个进程的进程ID

$-

显示Shell使用的当前选项,与set命令功能相同

    注意:$*和$@的不同点:

    只有在双引号中体现出来,如下:

    [root@localhost ~]# cat test4

    #!/bin/bash

 

    for i in "$*";do

    echo $i

    done

 

    for i in "$@";do

    echo $i

    done

    [root@localhost ~]# bash test4 1 2 3

    1 2 3 //把“1 2 3”看成了一个参数

    1

    2

    3

   (2)位置参数

        用于处理命令行参数,出现在命令行上的位置确定的参数。

        在Bash中总共有十个 位置参数,其对应的名称依次是$0,$1,$2,...,$9。其中$0始终表示命令名或脚本名,对于一个命令行,必然有命令名也就是$0;而其他位置参数根据实际要求,可有可无。

        ①输出位置参数

        [root@localhost ~]# cat > test1 //利用屏幕复制的方法建立脚本文件

        echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $0

        Ctrl+D //保存并结束

        [root@localhost ~]# sh test1 a b c d e f g

        a b c d e f g test1 //运行结果

        ②用set命令给位置参数赋值

        [root@localhost ~]# cat > test2

        echo $1 $2 $3

        set m1 m2 m3 //m1,m2,m3分别赋值给$1,$2,$3

        echo $1 $2 $3

        [root@localhost ~]# bash test2 a b c

        a b c

        m1 m2 m3

        ③移动位置参数

        此处我们引入shift,每执行依次shift命令,就把位置参数整体向左移一位,但不能将$0的值移走。

        [root@localhost ~]# cat test3

        echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $#

        shift

        echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $#

        shift 4

        echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $#

        [root@localhost ~]# sh test3 a b c d e f g h i j k

        test3 a b c d e f g h i 11

        test3 b c d e f g h i j 10

        test3 f g h i j k 6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值