2017-03-14 16:47:45 sdscsjmd 阅读数 1173

最近需要将本地hadoop服务器上的数据全部迁移到阿里云系统的服务器上,因此对LINUX SHELL中变量的使用方法进行了详细的研究。

LINUX SHELL中定义的变量有5种类型:本地变量、环境变量、位置变量、标准变量、特殊变量。(前面3种在本次导数中都有使用,因此进行详细说明)

注意:LINUX  BASH中的变量使用无需事先声明,没有数据类型的区别,变量的值都是以字符串的形式进行保存的,如果要进行数值计算,就需要对这些变量进行数值转换。


  • 这几种变量的准确含义及查看方法如下:

  1. 本地变量(用户自定义变量)/(局部变量):在当前SHELL环境下获得赋值,一旦当前SHELL关闭,变量的生存周期就结束了。查看当前SHELL的本地变量可以使用:set命令
  2. 环境变量(全局变量):可作用于当前SHELL下的所有子SHELL进程。在我的导数任务过程中需要使用到的系统数据库地址,用户名和密码即可以设置为当前SHELL的全局变量。查看当前SHELL的环境变量可以使用 env命令 或者 export命令 查看。
  3. 位置变量(相当于程序中的参数):BASH将从键盘读入的传递给脚本的参数保存在位置变量中,以便在脚本中使用这些参数。在我的导数任务中,需要程序的运行需要读入导入的数据的数据记录开始时间和数据记录结束时间,这个参数的传递使用位置变量。在SHELL中位置变量一般允许$0-$9这10个位置变量,其中$0代表程序本身,$1-$9代表第一到第九个参数。10个以上可以使用${n}。在本次导数中,我将开始导数的时间使用位置变量进行赋值。如下
  4. 标准变量:BASH环境建立的一些标准环境的变量。
  5. 特殊变量:LINUX BASH的特殊变量这里不再展开说明,以后用到再进行详细研究。

  • 这几种变量的赋值方法和调用方法

本地变量

         赋值方法:变量名=值 (注:等号两边不能有空格;变量名中不能包含空格,首字符必须为字母,可以包含下划线,不能跟BASH的关键字相同; 值中一般不能出现空格,如果有空格需要使用引号)

调用方法:$参数名



环境变量

环境变量可以保存到/etc/profile文件中,在其它的shell中都可以进行引用,例如export  var1=4,在其它脚本中可以直接进行引用,前面加上环境变量路径 source /etc/profile

        
2016-10-07 17:42:55 Mr_qiji 阅读数 352

linux中使用脚本定义环境变量

1、新建脚本文件
$touch test.sh
2、使用vi/vim等编辑器编写脚本
$vim test.sh
修改内容如下:

#!/bin/sh
#My first script
export ARCH=arm
export PATH=~/gcc-arm-none-eabi/gcc-linaro/bin/:$PATH
export CROSS_COMPILE=arm-linux-gnueabihf-

保存后退出。
3、给test.sh添加可执行权限
$chmod 755 test.sh
4、执行脚本
.<空格><[脚本文件路径]脚本文件>
$. ./test.sh
之后使用echo命令查询验证。
注意:此处脚本执行不能直接使用$./test.sh,这种方式执行的脚本,会以当前shell为父shell再开一个子shell,在子shell中执行脚本,设置的环境变量也不能传回至父shell中,脚本运行完之后,子shell关闭,设置的环境变量也消失了,因此使用echo命令不能在当前shell中查到。)

2018-04-26 01:53:10 taranfly 阅读数 399
  •  Shell 变量的种类

  1.  用户自定义变量: 由用户自己定义、修改和使用
  2.  预定义变量: Bash 预定义的特殊变量,不能直接修改
  3.  位置变量:  通过命令行给程序传递执行参数

  •   定义新的变量     
     
      a.   变量名要以英文字母或者下划线开头,区分大小写
      b.   格式:   变量名=变量值

  •    查看变量的值            
      
        a.   格式: echo $变量名 

  

[root@PengFay shell]# vim taran.sh

  1 #!/bin/bash
  2 #test.sh
  3
  4
  5 echo "my name is user1"
  6 echo "my name is user1"
  7 echo "my name is user1"
  8 echo "my name is user1"
  9 echo "my name is user1"


    
  •   变量的赋值与引用    

     引用变量时 ,$应在{}外,变量在{}里面



  1.  从键盘输入内容为变量赋值
            格式:   read   [-p   "信息"]  变量名


  1.   结合不同的引号为变量赋值                   
         双引号  “ ”:  允许通过$符号引用其他变量值
             单引号  ‘ ’:   禁止引用其他变量值,$ 视为普字符
             反引号    ` `    :     将命令执行的结果输出给变量


  •      变量的删除
 
    unset + 变量名   删除变量

unset   name   删除变量后,执行脚本
#unset name   注释后,执行脚本
 


  •    位置变量       

  1.    位置参数
         表示为 $n,  n为1~9 之间的数字

   应用位置变量

  1 #!/bin/bash
  2 #test httpd service
  3
  4 case $1 in
  5      start)
  6      echo "start ......"
  7      ;;
  8      stop)
  9      echo "stop........"
10      ;;
11      restart)
12      echo  "restart ....."
13      ;;
14 esac
~            
      

2 .    数字运算利用位置变量
  [root@PengFay shell]# vim expr.sh
  1 #!/bin/bash
  2 #expr
  3
  4 expr $1 \* $2
  5 expr $1 +  $2                   
    

 
  •   预定义变量

        1.  $#:   命令行中位置参数的个数
        2.  $* :   所有位置参数的内容
        3.  $? :   上一条命令执行后返回的状态,当返回状态为0时表示执行正常,非0值表示执行异常或者出错
        4.  $0 :    当前执行的进程/程序名


$0 :
[root@PengFay shell]# vim text.sh
  1 #!/bin/bash
  2 #test.sh
  3
  4 echo $0
  5 echo $0
  6 echo $0
  7 echo $0

 $#:   参数个数
[root@PengFay shell]# vim text.sh

  1 #!/bin/bash
  2 #test.sh
  3
  4 echo $#

    $* :   参数分别是什么
[root@PengFay shell]# vim text.sh

  1 #!/bin/bash
  2 #test.sh
  3
  4 echo "总共有 ${#}个参数,参数分别是:"
  5 echo
  6 echo  $*
             
$* : 
[root@PengFay shell]# vim text.sh

  1 #!/bin/bash
  2 #test.sh
  3
  4 for i in $*
  5 do
  6    echo $i
  7    sleep 2
  8 done
  
 
  $* 运算


    $? :   检查上一条命令 执行成功还是失败

 


汇总 :

2019-07-19 15:01:00 weixin_30951389 阅读数 9

LinuxShell脚本——变量和数据类型

摘要:本文主要学习了Shell脚本中的变量和数据类型。

变量

定义变量的语法

定义变量时,变量名和变量值之间使用“=”分隔,并且等号两边不能有空格:

1 变量名=变量值

变量名规则

变量名的定义必须遵循以下规则:

1 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
2 中间不能有空格,可以使用下划线。
3 不能使用标点符号。
4 不能使用bash里的关键字。

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,建议将变量名使用 {} 括起来之后再添加美元符号:

1 echo ${name}

修改变量为只读

使用readonly命令可以将变量定义为只读变量,只读变量的值不能被改变,也不能被删除:

1 readonly name

删除变量

使用unset命令可以删除变量,但不能删除只读变量:

1 unset name

位置参数

运行Shell脚本文件时我们可以给它传递一些参数,这些参数在脚本文件内部可以使用 $n 的形式来接收。例如: $1 表示第一个参数, $2 表示第二个参数,依次类推。

如果参数个数达到或者超过了10个,那么就得用 ${n} 的形式来接收了,例如: ${10} 、 ${23} 。 {} 的作用是为了帮助解释器识别参数的边界,这跟使用变量时加 {} 是一样的效果。

脚本内容:

1 #!/bin/bash
2 echo "第一个参数 : $1"
3 echo "第二个参数 : $2"

脚本调用:

1 [root@localhost ~]# sh test.sh A B

执行结果:

1 第一个参数 : A
2 第二个参数 : B

特殊变量

除了位置参数以外,Shell中还有一些特殊变量,这些特殊变量描述了传入参数的某些信息:

1 $0:当前脚本的文件名。
2 $n:n是一个数字,表示第几个参数。
3 $#:传递给脚本或函数的参数个数。
4 $*:传递给脚本或函数的所有参数。当被双引号""包含时,会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。
5 $@:传递给脚本或函数的所有参数。当被双引号""包含时,仍然将每个参数都看作一份数据,彼此之间是独立的。。
6 $?:上个命令的退出状态,或函数的返回值。
7 $$:当前Shell的进程ID。对于Shell脚本,就是这些脚本所在的进程ID。

数据类型

字符串

字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。

建议使用双引号,因为双引号里可以有变量和特殊字符,可以按照变量和特殊字符去使用。

声明字符串类型的变量:

1 name="Sam"

拼接字符串:

1 hello="hello, $name !"

整数型

在Shell中所有的变量默认都是字符串型。也就是说,如果不手工指定变量的类型,那么所有的数值都是不能进行运算的:

1 [root@localhost ~]# a=1
2 [root@localhost ~]# b=2
3 [root@localhost ~]# c=$a+$b
4 [root@localhost ~]# echo $c
5 1+2

如果想要进行数学运算,可以使用“$((运算式))”或“$[运算式]”方式运算:

1 [root@localhost ~]# echo $(($a+$b))
2 3
3 [root@localhost ~]# echo $[$a+$b]
4 3

数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。用括号来表示数组,数组元素用空格符号分割开。定义数组的一般形式为:

数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

声明数组类型的变量:

1 数组名=(值1 值2 ... 值n)

也可以通过指定下标来声明:

1 数组名[下标]=值

获取数组指定下标的值:

1 ${数组名[下标]}

使用“@”符号可以获取数组中的所有元素:

1 ${数组名[@]}

转载于:https://www.cnblogs.com/shamao/p/11213317.html

2017-12-17 17:54:07 watcher0111 阅读数 694
[root@bogon logstash]# more logstash-start.sh
export JAVA_HOME=/usr/java/jdk1.8.0_151
nohup bin/logstash -f 10.96.91.205.conf &
没有更多推荐了,返回首页