精华内容
下载资源
问答
  • http://linuxnote.blog.51cto.com/9876511/1641142一、什么是变量Shell编程语言是非类型的解释型语言,不像C++/JAVA语言编程时需要事先声明变量,SHELL给一个变量赋值,实际上就是定义了变量,在Linux支持的所有shell中...

    创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://linuxnote.blog.51cto.com/9876511/1641142

    一、什么是变量

    Shell编程语言是非类型的解释型语言,不像C++/JAVA语言编程时需要事先声明变量,SHELL给一个变量赋值,实际上就是定义了变量,在Linux支持的所有shell中,都可以用赋值符号(=)为变量赋值。

    SHELL变量可分为两类:局部变量和环境变量。局部变量只在创建它们的shell脚本中使用。而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用。有些变量是用户创建的,其他的则是专用shell变量。

    例如在脚本里面定义A=123 ,定义这样一个变量,前面变量名,后面是变量的值。

    引用变量可以使用$A,把变量放在脚本里面会出现什么样的效果呢?如下:

    #!/bin/bash

    #Author Jacken 2015-04-28

    A=123

    echo                   “The number is  $A”

    执行脚本:

    #bash test.sh

    结果将会显示:

    The number is 123

    简单的理解变量,相当于定义一个别名-名称,引用的时候加上$符号就可以了.

    二、变量的操作与类型

    定义变量

    变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

    2、中间不能有空格,可以使用下划线(_)。

    3、不能使用标点符号。

    4、不能使用bash里的关键字(可用help命令查看保留关键字)。

    5、变量是严格区分大小写的。

    使用变量

    echo 把所在行输出到屏幕。

    使用一个定义过的变量,只要在变量名前面加美元符号($)

    变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

    https://www.cndba.cn/Expect-le/article/1628

    [root@Shell ~]# A=hi

    [root@Shell ~]# echo $A

    hi

    [root@Shell ~]# echo $Ahello

    [root@Shell ~]# echo ${A}hello

    hihello

    [root@Shell ~] #

    推荐给所有变量加上花括号,这是个好的编程习惯。

    重新定义变量

    已定义的变量,可以被重新定义,如:

    [root@Shell ~] # cat test.sh

    #!/bin/bash

    #

    #

    A=hi

    echo "The First variable is $A"

    A=hello

    echo "The Second variabe is $A"

    [root@Shell ~]# bash  test.sh

    The First variable is hi

    The Second variabe is hello

    [root@Shell ~] #

    只读变量

    使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。下面的例子尝试更改只读变量,结果报错:

    https://www.cndba.cn/Expect-le/article/1628https://www.cndba.cn/Expect-le/article/1628

    [root@Shell ~] # cat test.sh

    #!/bin/bash

    #

    #

    A=hi

    B=hi2

    readonly A B

    A= "hello"

    B= "hello2"

    echo "The First variable is $A $B"

    [root@Shell ~]# bash test.sh

    test.sh: line 7: A:readonly variable

    test.sh: line 8: B:readonly ariable

    The First variable is hi hi2

    [root@Shell ~] #

    删除变量

    变量被删除后不能再次使用;unset 命令不能删除只读变量。

    [root@Shell ~] # cat test.sh

    #!/bin/bash

    #

    A=hi

    B=hi2

    readonly A

    unset A B

    A="hello"

    B= "hello2"

    echo "The First variable is $A $B"

    [root@Shell ~]# bash test.sh

    test.sh: line 6: unset : A: cannot unset :readonly variable

    test.sh: line 7: A:readonly  variable

    The First variable is hi hello2

    [root@Shell ~] #

    变量名称    =        等号右边为空,代表将变量值设为nullhttps://www.cndba.cn/Expect-le/article/1628

    unset    变量名称    不加任何选项,会先尝试取消变量,若失败,再试着取消与该变量同名的函数

    unset -v 变量名称    -v 表示要取消的是变量

    unset -f 函数名称    -f 表示要取消的是函数

    "declare -x 变量名称" 和 “export 变量名称” 都可以把变量变成环境变量。

    [root@Shell ~]# A=hi

    [root@Shell ~]# B=hello

    [root@Shell ~]# declare -x A   //把A变成环境变量

    [root@Shell ~]# vim test.sh

    [root@Shell ~]# cat test.sh

    #!/bin/bash

    #

    echo                  "The  first variable is  $A"

    echo                  "The  second variable is  $B"

    [root@Shell ~]             # bash test.sh

    The  first variable is  hi

    The  second variable is

    [root@Shell ~]             #

    [root@Shell ~]             # C=one

    [root@Shell ~]             # D=two

    [root@Shell ~]             # export C    //把C变成环境变量

    [root@Shell ~]             # bash

    [root@Shell ~]             # echo $C

    one

    [root@Shell ~]             # echo $D

    [root@Shell ~]             #

    readonly        变量名称 把变量设为只读变量

    -f  函数名称 设定该函数式不可修改

    -a  数组变量 -a后的数组变量名称是只读数组

    declare -r      变量名称 把变量设为只读变量

    -a  变量名称设定变量是一个数组

    -p  变量名称显示变量的属性

    -i  变量名称变量是一个整数

    -x  变量名称变成环境变量

    alias 别名=指令

    1、等号两边不能有空白

    2、等号右边有空白字符,需要用引号'',文件位置在家目录下.bashrc

    运行shell时,会同时存在三种变量:

    1) 局部变量

    局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。https://www.cndba.cn/Expect-le/article/1628

    2) 环境变量

    所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

    3) shell变量

    shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

    特殊变量

    / 转义,把具有特殊含义的字符转为无代表意义的字符串。

    变量含义

    $0 当前脚本的文件名

    $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。

    $# 传递给脚本或函数的参数个数。

    $* 传递给脚本或函数的所有参数(一个整体的字符串)。

    $@ 传递给脚本或函数的所有参数(一个个字符串)。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。

    $? 上个命令的退出状态,或函数的返回值。

    $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

    $! Shell最后运行的后台Process的PID

    [root@Shell ~]# chmod +x test.sh

    [root@Shell ~]# ./test.sh one two three four

    当前脚本的文件名标识符 $0 ./test.sh

    传递给脚本的参数 $n  one three

    传递给脚本的个数$             # 4https://www.cndba.cn/Expect-le/article/1628

    传递给脚本的所有参数$* one two three four

    传递给脚本的所有参数$@ one two three four

    当前shell的进程ID$$ 17820

    [root@Shell ~]# cat test.sh

    #!/bin/bash

    #

    echo "当前脚本的文件名标识符 /$0 $0"

    echo "传递给脚本的参数 /$n  $1 $3"

    echo "传递给脚本的个数/$# $#"

    echo "传递给脚本的所有参数/$* $*"

    echo "传递给脚本的所有参数/$@ $@"

    echo "上一个命令的状态返回值/$? $?"

    echo "当前shell的进程ID/$$ $$"

    [root@Shell ~]#

    $* 和 $@ 的区别

    从上边的例子中,看起来$*和$@输出结果是一样的,其实不然,$*输出的是"one two three four"一个整体的字符串,而$@输出的是one、two、three、four四个字符串。

    Other

    在写脚本的时候,为了怕打错变量名称,造成排错上的困难,我们可以规定:变量一律要先经过设定的程序才能使用。

    shopt -s -o nounset

    -s 是打开选项的意思;

    -o 是指可用set -o设定的选项

    三、数组

    数组是一种数据结构,由相关的数据项组成。每个数据项称为,称为数组的元素,且可使用索引的方式取得各元素的值。

    bash的数组,其元素的个数没有限制,数组的索引由0开始,但不一定要连续(可以跳号)。

    显示或取得某一元素的值${数组[索引值]},例 数组A的第3个元素为${A[2]}。索引是可以做算术运算的。

    使用数组的索引时,第一个元素由0开始,第n个元素的索引值为n-1

    echo ${数组[@]} 取出所有元素,得到的是以空格隔开的字符

    echo ${数组[*]} 取出所有元素,得到的是一串字符串

    echo${#数组[@]}或echo ${#数组[*]}取得数组元素的个数

    unset 数组 取消数组

    unset 数组[2]   取消数组中的第3个元素

    [root@Shell ~]# cat test.sh

    #!/bin/bash

    #

    A[0]=5

    A[1]=15

    A[3]=17

    A[4]=19

    echo "/${A[@]}代表数组A的所有元素(空格隔开的字符串)${A[@]}"

    echo "/${A[*]}代表数组A的所有元素(代表一个整体字符串)${A[*]}"

    echo "/${#A[@]}代表数组A的元素个数${#A[@]}"

    echo  "/${#A[*]}代表数组A的元素个数${#A[*]}"

    [root@Shell ~]#

    [root@Shell ~]# bash test.sh

    ${A[@]}代表数组A的所有元素(空格隔开的字符串)5 15 17 19

    ${A[*]}代表数组A的所有元素(代表一个整体字符串)5 15 17 19

    ${#A[@]}代表数组A的元素个数4

    ${#A[*]}代表数组A的元素个数4

    [root@Shell ~]#

    本文出自 “生命不息,奋斗不止!” 博客,请务必保留此出处http://linuxnote.blog.51cto.com/9876511/1641142

    展开全文
  • linux shell编程对变量赋值shell变量赋值,所有的变量都是由字符串组成,不需要对变量名预先声明,而且有很多关键字供编程者使用。下面列举例子详细说明。 在终端下建立文件 #vi s2.sh#!/bin/sh#set a ...

    linux shell编程对变量的赋值

    shell对变量的赋值,所有的变量都是由字符串组成,不需要对变量名预先声明,而且有很多关键字供编程者使用。下面列举例子详细说明。 在终端下建立文件 #vi s2.sh

    #!/bin/sh

    #set a variable a

    a="hello world"

    #print a

    echo "A is :"

    echo $a

    在这个程序当中,可以看到shell编程与C编程的区别,没有那么严格的语法,在每句不需要加“;”,

    而且在shell中引用变量的.时候前面加“$”。

    1 当变量名与其他文字混淆的时候,需要加“{}”

    #!/bin/sh

    # set a variable num

    num=2

    echo "the variable num is $numnd"

    运行程序后,答案并不是 the variable num is 2nd,而是什么都没有输出。因为bash会寻找numnd变量,但是并没有给这个变量赋值。所以将程序改为:

    echo "the variable num is {$num}nd"

    2 默认变量

    $#:传入脚本的命令行参数个数

    $*:所有命令行的参数值,而且各个参数值之间有空格表示

    $0:命令本身,就是要执行的shell文件名

    $1:第一个命令行参数

    $2:第二个命令行参数

    $3

    $4

    example:

    #!/bin/sh

    echo "number of vars:"$#

    echo "number of vars:"$0

    echo "number of vars:"$*

    echo "number of vars:"$1

    echo "number of vars:"$2

    echo "number of vars:"$3

    运行./file 11 22 33

    输出结果:

    3

    file

    11 22 33

    11

    22

    33

    3局部变量

    在变量首次赋值是加关键字local可以声明为局部变量。

    #!/bin/sh

    hello="aa"

    echo $hello

    function fucn1{

    local hello="bb"

    echo $hello

    }

    func1

    echo $hello

    【 linux shell编程对变量的赋值】相关文章:

    展开全文
  • shell变量赋值-linux

    万次阅读 2013-10-09 13:49:33
    Shell变量赋值 命名须规则: 1)使用变量无需事先声明 2)首个字符必须为字母(a-z,A-Z) 3)中间不能有空格,可以使用下划线(_) 4)不能使用标点符号 5)不能使用bash里的关键字(可用help命令查看保留关键字)...
    Shell变量赋值
    命名须规则:
    1)使用变量无需声明
    2)首个字符必须为字母(a-z,A-Z)
    3)中间不能有空格,可以使用下划线(_)
    4)不能使用标点符号
    5)不能使用bash里的关键字(可用help命令查看保留关键字)
    6)需要给变量赋值时,可以这么写:
    7)变量名=值
    8)一个变量的,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 )

    例1:(变量赋值)
    #!/bin/sh 
    # 对变量赋值: 
    a="hello world" #等号两边均不能有空格存在 
    # 打印变量a的值: 
    echo "A is:" $a 
    挑个自己喜欢的编辑器,输入上述内容,并保存为文件first,然后执行 chmod +x first 使其可执行,最后输入./first 执行该脚本。
    其输出结果如下: 
    "A is: hello world "

    例2:(区别变量)
    错误用法:
    有时候变量名可能会和其它文字混淆,比如:
    num=2 
    echo "this is the $numnd" 
    上述脚本并不会输出"this is the 2nd"而是"this is the"
    这是由于shell会去搜索变量numnd的值,而实际上这个变量此时并没有值。

    正确用法:
    num=2 
    echo "this is the ${num}nd" 
    其输出结果为:
    "this is the 2nd"
    [
    注意:花括号的位置?
    num=2 
    echo "this is the {$num}nd" 
    其输出结果为:this is the {2}nd
    ]

    例3:(变量值作为数字)
    需要注意shell的默认赋值字符串赋值
    错误方式:
    var=1 
    var=$var+1 
    echo $var 
    打印出来的不是2而是1+1
    正确方式:
    1)let "var+=1" 
    2)var=$[$var+1]   
    3)var=`expr $var +1`#注意加号两边的空格,否则还是按照字符串的方式赋值。[暂时无效] 
    echo $var 打印出来是2
    注意:前两种方式在bash下有效,在sh下会出错。[注意:我的虚拟机中:/bin/sh->/bin/bash]
    let表示数学运算;
    $[]将中括号内的表达式作为数学运算先计算结果再输出;
    expr用于整数值运算,每一项用空格隔开;[暂时无效]


    展开全文
  • linux shell变量赋值

    2020-01-02 16:26:13
    shell脚本基本变量赋值 数值型 a = 0(错误写法) “=“两侧不能有空格 报错:“command not found” a=0(正确写法) 字符串型 b = ”berwin“(错误写法) “=“两侧不能有空格 报错:“command not found” b=“berwin...

    shell脚本基本变量赋值

    数值型

    a = 0(错误写法) “=“两侧不能有空格
    报错:“command not found”
    a=0(正确写法)

    字符串型

    b = ”berwin“(错误写法) “=“两侧不能有空格
    报错:“command not found”
    b=“berwin”(正确写法)

    运行时就会报错:“command not found”,将空格删除正常运行。

    展开全文
  • linux shell bash变量赋值

    2018-11-27 17:02:02
    简单的变量赋值  1 #!/bin/bash  2 # "裸体"变量 3 4 echo 5 6 # 变量什么时候是"裸体"的, 比如前边少了$的时候? 7 # 当它被赋值的时候, 而不是被引用的时候. 8 9 # 赋值 10...
  • shell 变量赋值

    千次阅读 2015-07-23 13:55:24
    shell变量赋值不能有空格。 var=123 正确 var = 123 错误
  • Shell 变量赋值的详细使用 一、变量的定义: 变量名的命名规则: 命名的名字要有意义 字母、数字、下划线 不以数字开头 二、变量的赋值: 变量赋值的过程,称为变量替换。 1.变量名=变量值: a=123 # 将123数字...
  • Linux Shell Bash 变量赋值

    万次阅读 2013-07-08 16:59:54
    简单的变量赋值 1 #!/bin/bash 2 # "裸体"变量 3  4 echo 5  6 # 变量什么时候是"裸体"的, 比如前边少了$的时候? 7 # 当它被赋值的时候, 而不是被引用的时候. 8  9 # 赋值 10 a=879 11 ...
  • linux shell脚本 变量给变量赋值

    千次阅读 2016-08-24 13:11:41
    SPLIT_NAME=`expr $2`
  • linux shell编程对变量赋值shell变量赋值,所有的变量都是由字符串组成,不需要对变量名预先声明,而且有很多关键字供编程者使用。下面列举例子详细说明。 在终端下建立文件 #vi s2.sh#!/bin/sh#set a ...
  • Linux Shell编程变量赋值和引用

    千次阅读 2013-11-12 20:41:23
    我们可以使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/sh  ...  注意:最好使用“!/bin/bash”而不是“!/bin/sh”,...
  • linux shell--变量赋值

    2016-12-16 13:25:58
    shell的默认赋值是字符串赋值 为了达到我们想要的效果有以下几种表达方式:  #注意加号两边的空格,否则还是按照字符串的方式赋值。 注意:前两种方式在bash下有效,在sh下会出错。 let表示数学运算,...
  • Linux shell 变量 数学 运算

    千次阅读 2017-02-22 20:36:14
    1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算; 2)Linux shell 中使用 expr 与 bc 两个程序实现高级运算; 1, Linux shell 变量的基本运算 数值作为常规变量...
  • Linux系统shell脚本变量给变量赋值

    千次阅读 2020-07-07 08:28:38
    a=100 c=a b=${a} 上面代码中, 第一行代码,将变量a赋值100; 第二行代码,将变量c赋值为字符a; 第三行代码,将变量b赋值为a的值100 。
  • Linux Shell Bash 变量赋值中"$()"的作用

    万次阅读 2011-11-04 22:53:55
    例子 4-2. 简单的变量赋值 1 #!/bin/bash 2 # "裸体"变量 3  4 echo 5  6 # 变量什么时候是"裸体"的, 比如前边少了$的时候? 7 # 当它被赋值的时候, 而不是被引用的时
  • Linux shell 变量引用

    2019-07-17 10:49:13
    Linux shell 变量引用 样例代码:3-7.sh 需要注意的是variable3赋值的字符串中the后是两个空格! #!/bin/bash # variable="this is the first variable." echo $variable # variable2="this is the second variable....
  • Shell变量赋值语句不能有空格

    万次阅读 2017-01-24 11:03:51
    前两天编一个shell脚本犯了一个低级错误,给变量赋值时加了空格(时间长了,规则都忘了),结果导致变量没有赋值,无法完成预定的功能。因为是一个定时执行的脚本,又是用一个老脚本改的,也就没有测试,结果没有...
  • shell 变量赋值与替换

    2015-01-26 16:30:36
    情形一:var1未被定义或值为空就把:=后的值赋值变量var1 得出结果:echo ${var1:=pppp} #pppp echo $var1 #pppp 情形二:如 var2="hello world";${var2:="thank you"} 当变量var2的值不为空,此表达式不...
  • Linux shell变量数学运算 Abstract :  1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算; 2)Linux shell 中使用 expr 与 bc 两个程序实现高级运算; 1, Linux ...
  • linux shell 变量

    2016-04-29 11:56:09
    在日常的shell编写时,或多或少会用到变量变量有哪些类型,怎么定义,如何使用,围绕这三个接单记录下,方便后续过程中查询 变量定义及赋值 test=“收拾收拾” 定义一个变量名为test的变量linux变量定义...
  • linux shell数组赋值方法

    万次阅读 2012-03-26 15:17:21
    Bash中,数组变量赋值有两种方法:  (1) name = (value1 ... valuen) 此时下标从0开始  (2) name[index] = value  下面以一个简单的脚本来说明,脚本内容如下:  #!/bin/bash  #定义数组  A=(a b c ...
  • shell的作用----命令解释器 “翻译官” 介于系统内核与用户之间,负责解释命令行 ...每一行一条Linux命令 按执行顺序依次编写 执行脚本文件 方法一:脚本文件路径(必须有x权限) ./fir...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,763
精华内容 17,905
关键字:

linuxshell变量赋值

linux 订阅