SHELL中的变量

SHELL中的变量

 

         运行SHELL脚本中的单个命令自然有用,但这有其自身的限制。通常你会需要在SHELL命令使用其他数据来处理信息。这可以通过变量来实现。变量允许你临时性地将信息存储在SHELL脚本中,以便和脚本中的其他命令一起使用。

1 环境变量                                               

SHELL维护着一组环境变量,用了记录特点的系统信息。比如系统的名称、登录到系统上的用户名、用户的默认家目录以及SHELL查找程序的搜索路径。可以用set命令来显示一份完整的当前环境变量。

[root@local data]# set |head -30

ABRT_DEBUG_LOG=/dev/null

BASH=/bin/bash

BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath

BASH_ALIASES=()

BASH_ARGC=()

BASH_ARGV=()

BASH_CMDS=()

BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d

[. . . ]

在脚本中,你可以在环境变量名称前加上美元符 $ 来使用这些环境变量。

例如:[root@local data]# echo $HOME

                             /root

2 用户变量                                               

           处理环境变量,SHELL脚本中还允许在脚本中定义和使用自己的变量。定义变量允许临时存储数据并在整个脚本中使用,从而使SHELL脚本看起来更像一个真正的程序。

           用户变量定义规则:可以用字母、数字、下划线组成的文本字符串。长度不超过20个。用户变量区分大小写。

           使用等号将赋值给用户变量。注意:在变量、等号和值之间不能出现空格。

例如:var1=10MYNAME=xiaoming

           1SHELL会自动决定变量值得数据类型。在脚本的整个生命周期中,SHELL 脚本中定义的变量会一直保持着它们的值,但在SHELL结束时会被删除。

           2)变量每次被引用时,都会输出当前赋给它的值。引用一个变量是需要使用美元符”$”,二引用变量来对其进行赋值时则不要使用美元符。

3 只读变量                                               

           只能声明,但是不能修改和删除。

声明只读变量:

                    readonly
      name

                      declare  -r    name

查看只读变量:      readonly   -p

4 位置变量                                               

        在脚本代码中调用命令行传递给脚本的参数

$1$2……:对应第12….个参数,shift[n] 换位置

$0:脚本本身

$*:传递给脚本的所有参数,全部参数合为一个字符串

$@:传递给脚本的所有参数,每个参数为独立的字符串

$#:传递给脚本的参数的个数

注意:$@$* 只有在被双括号扩起来的时候才有差异

set – – 清空所有位置变量

5 命令替换                                               

           SHELL脚本中最有用的特性之一就是可以从命令输出中提取信息,并将其值赋给变量。把输出赋给变量之后,就可以随意在脚本中使用了。

           有两种方法可以将命令输出赋给变量:

(1)       反引号 ( ` )

(2)       $( ) 格式。

例如: testing=`date`

  或者testing=$(date)

在脚本通过命令替换获得当前日期并用来生成唯一文件名。

#!/bin/bash

#

today=$( date +%Y-%m-%d-%H:%M:%S)

ls /root/123 
al  >log.$today

 

原创文章,作者:linux is not unix,如若转载,请注明出处:http://www.178linux.com/73455

(0)
上一篇 2017-04-16 19:40
下一篇 2017-04-16 20:21

相关推荐

  • grep 正则表达式 find

    1.显示当前系统上root,fedora 或user1用户的默认shell [root@centos7 ~]# grep -E  “^(root|fedora|user1)” /etc/passwd root:x:0:0:root:/root:/bin/bash fedora:x:2003:2003::/home/fedora:/bi…

    2017-09-18
  • 用户相关文件简介

    2016/10/23 总结关于用户和组相关的配置文件 Linux系统主要有4个文件与用户和组的配置有关, 主要为/etc/passwd  /etc/shadow   /etc/group  /etc/gshadow 首先来解释一下什么是用户,什么是组 用户:      管理员用户&nbsp…

    Linux干货 2016-10-24
  • Linux的终端类型

         序  终端的概念是由Ken Thompson提出的,是人机交互的接口。它是一种字符型设备,有多种类型,它大体上分为设备终端,物理终端,虚拟终端,图形终端,串行终端,伪终端。 一、   设备终端  设备终端就是显而易见的外在设备,比如键盘、鼠标和显示器等。 二、&nbsp…

    Linux干货 2016-10-19
  • awk基本用法

    一、awk介绍     awk、sed&grep都可以匹配文本,但sed和awk可以对文本进行编辑,grep则不具有此功能;sed是非交互式的流编辑器,而awk则是一门模式匹配的编程语言。awk主要用于处理匹配的文本,同时awk还支持编程语言的一些特性,如变量、函数、循环语句等。  &nbs…

    Linux干货 2016-09-21
  • 用户、组及其管理

    用户和组管理    Linux是一个多用户、多任务的操作系统。多用户、多任务就是可以在系统上建立多个用户,多个用户可以在同一时间内登录同一台主机的系统执行不同的任务,而互不影响。例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内root用户可能在管理维护系统,www用户可能在修改自己的程序和操作…

    Linux干货 2016-08-04
  • 我的第一篇博客

    Hello,大家好,以后我也是博客中的一员了,希望能和大家共同进步。

    Linux干货 2017-07-11