Linux Shell编程变量赋值和引用

我们可以使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):

#!/bin/sh

...

注意:最好使用“!/bin/bash”而不是“!/bin/sh”,如果使用tc shell改为tcsh,其他类似。

符号#!用来告诉系统执行该脚本的程序,本例使用/bin/sh。编辑结束并保存后,如果要执行该脚本,必须先使其可执行:

chmod +x filename

此后在该脚本所在目录下,输入 ./filename 即可执行该脚本。

Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:

首个字符必须为字母(a-z,A-Z)

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

不能使用标点符号

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

需要给变量赋值时,可以这么写:

变量名=值

要取用一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 )

#!/bin/sh

# 对变量赋值:

a="hello world"  #等号两边均不能有空格存在

# 打印变量a的值:

echo "A is:" $a

挑个自己喜欢的编辑器,输入上述内容,并保存为文件first,然后执行 chmod +x first 使其可执行,最后输入 ./first 执行该脚本。其输出结果如下:

A is: hello world

有时候变量名可能会和其它文字混淆,比如:

num=2

echo "this is the $numnd"

上述脚本并不会输出"this is the 2nd"而是"this is the ";这是由于shell会去搜索变量numnd的值,而实际上这个变量此时并没有值。这时,我们可以用花括号来告诉shell要打印的是num变量:

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

需要注意shell的默认赋值是字符串赋值。比如:

var=1

var=$var+1

echo $var

打印出来的不是2而是1+1。为了达到我们想要的效果有以下几种表达方式:

let "var+=1"

var=$[$var+1]

var=`expr $var + 1`#注意加号两边的空格,否则还是按照字符串的方式赋值。

注意:前两种方式在bash下有效,在sh下会出错。

let表示数学运算,expr用于整数值运算,每一项用空格隔开,$[]将中括号内的表达式作为数学运算先计算结果再输出。

Shell脚本中有许多变量是系统自动设定的,我们将在用到这些变量时再作说明。除了只在脚本内有效的普通shell变量外,还有环境变量,即那些由export关键字处理过的变量 详情参

时间: 2024-10-17 09:54:46

Linux Shell编程变量赋值和引用的相关文章

十三、Shell篇——变量赋值、引用、作用范围

变量的定义 变量名的命名规则 - 字母.数字.下划线 - 不以数字开头 变量的赋值 为变量赋值的过程,称为变量替换 变量名=变量值 - a=123 使用let为变量赋值 - let a=10+20 将命令赋值给变量 - l=ls 将命令结果赋值给变量,使用$ () 或者" 变量值有空格等特殊字符可以包含在""或"中 (1)将命令结果赋值给变量,使用$ () 或者" [email protected] ~ % cmd1=`ls test/` [email p

linux shell编程 变量引用

shell共三个引用符号,双引号,单引号和反引号`(在英文状态下tab键之上,1键之左的那个键). 双引号"":引用除了美元符号$,反引号`和反斜杠\之外的所有字符. 单引号'':引用所有的字符. 反引号``:shell将反引号中的内容解释为系统的命令. 反斜杠\:转义符号,屏蔽下一个字符的特殊含义. 一个变量加不加双引号在一般情况下是一样的,比如: num=10 echo $num echo "$num" 这两个会打印出相同的内容. str="X    

Linux Shell编程基本知识

Shell是Linux提供的一种脚本语言,可以完成部分编程操作.从根本上讲Shell仅仅是一个命令解释器,而Shell脚本也就是一个由命令和一些简单的逻辑判断的堆砌. 所以说学好Shell脚本最重要的因素就是熟悉基本命令的使用.并掌握一些Shell逻辑判断的语句. 写一个shell脚本首先要声明shebang,也就是:   #!/bin/bash 由于Shell可能涉及的东西比较多,我这里只给大家列出来一些常用的东西: 1.命令执行状态结果: #判断语句的关键  0        #执行成功  

Linux Shell编程之二选择结构

Shell编程学习之二 一.bash的条件测试 测试方法或者说测试书写: test EXPR [ EXPR ] [[ EXPR ]] 例如:测试变量 User_Name 的之是否为root test $User_Name="root" [ $User_Name == "root" ] [[ $User_Name == "root" ] 根据比较时操作数的类型,测试类型分为: 测试类型 运算符 运算符所代表的意义 示例 整形测试 -gt -lt -

Linux Shell编程之五字符串的处理

shell编程之字符串处理 在 shell 中,由于是一种弱类型的语言,在没有事先申明变量类型的情况下,所有的变量都是字符串.所以对字符串的处理就显得相当重要了. 下面介绍常见的对字符串处理的操作. 一.字符串切片 ${string_var:offest:length},类似于数组元素的提取. # 这里的string_var是一个变量,offest 是字符串的开始偏移量,length是切去字符串的长度 var=dhcpd:x:177:177:DHCP server:/:/sbin/nologin

Vim 中的变量赋值、引用与作用域

使用 let 进行变量赋值,echo 打印变量的值, unlet 销毁变量. 对于 Vim 选项还可用 set 来更方便地操作,比如 set {option}, set no{option}, set {option}?. 普通变量可以直接引用,环境变量要加前缀 $.寄存器变量要加前缀 @.Vim 选项要加前缀 &. 变量默认作用域取决于定义的位置,函数内则为函数作用域,外部则为全局变量. 赋值和引用变量时可以使用 b:,g:,l:,t: 等前缀来指定要操作哪个作用域的变量. 和其他编程语言一样

Linux Shell 编程实战技巧

目前,越来越多的企业应用会部署在 Linux 系统上的,而 Linux Shell 脚本可以极大地帮助我们完成这些应用的运维任务.这使得 Linux Shell 开发技能成为开发人员的一项重要的.有竞争力的技能.本文就笔者的实际开发经验,以 Korn Shell 为例分享了脚本开发中的常见问题及相关技巧. 避免定时任务脚本的常见问题 很多脚本在实际使用的时候往往是以定时任务的方式运行,而非手工运行.但是实现同样功能的脚本在这两种运行方式下可能遇到的问题不尽相同. 以定时任务方式运行的脚本往往会遇

京峰Linux Shell编程从入门到精通

课程介绍:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. -------------------课程目录------------------- <Shell编程从入门到精通> ├1.linux下shell编程基础入门_(new).mp4├2.Shell编程之变量及LAMP导航菜单编写_(new).mp4├3.Shell编程之IF条件语句各种案例演练_(new).mp4├4.使用if条件语句编写MySQL备份脚本_(new).mp4

变量赋值(非引用) php内核的实现(三)

<?php $a=1; $b=&a; $c=2; $d=$c; $c=$b; 结论: 保存左值的指针,为内存回收做准备,同时该指针会被再次赋值 1)左值不是一个引用 1.1)如果左值 refcount_gc为1,说明左值被赋过值, 1.1.1)右值为引用 ,进入第2步 1.1.2)右值不是引用,refcount_gc加1,将右值拷贝给左值 1.2)如果不为1,说明第一次出现,或者被别的变量共同使用了 zval, 其refcount_gc减1 ,将左值GC buffer中 (由GC判断是否需要