shell变量与字符串操作

默认情况下,Bash shell是一种无类型的脚步语言,除非用declare特别声明,否则它不会区分一个变量是整数变量、浮点数变量还是字符串变量。在Bash shell中所有的变量都被看成是字符串,使用时也不需要进行声明。

1、变量的命名

bash shell中变量的命名规则和C语言相同,必须是由英文字母、数字及下划线组成,第一个字符必须是字母或下划线,变量的长度没有限制,但英文字母区分大小写。虽然,bash shell中使用变量时不需要声明,但还是提倡对一些重要的变量进行声明、添加注释,以便阅读和维护。声明或创建一个变量之后,它的作用域是当前shell,子shell无法获取父shell中定义的变量,除非该变量时环境变量。

2、设定变量

在bash shell中要设置某个变量的值是很容易的,只需要按照:

变量名称=值

的方式即可改变某个变量的值,需要注意的是等号的两边是不能有空格的,若值中含有空格的话,需要用引号括起来。

3、获取变量值

要获取某个变量的值只需要在该变量的名称前面加上$或用${}将变量括起来即可。

# echo $PATH

# echo ${PATH}

4、取消与清空变量

当你不再需要某个变量时,你可能想取消该变量,即将该变量从当前名字空间中删除并释放该变量所占用的内存。在bash shell中可以用unset命令来取消某个变量。用法如下:

unset 变量名称 或 unset -v 变量名称

-v表示取消变量,unset除了可以用来取消变量外,还可以用来取消函数,用unset来取消函数时,用法如下:

unset -f 函数名称

使用unset以后,变量就不复存在了,这可能并不是你想要的,你可能只是想将清除该变量中的值,使其为null,即清空变量,清空变量的操作如下:

变量名称=

5、环境变量

只有当一个变量成为环境变量时,它才能为子shell所用,为了使一个变量成为环境变量,需要使用export命令,具体如下:

变量名称="xxxx"

export 变量名称 

export 变量名称="xxxx"

除了使用export之后,还可以在声明的时候就将变量指定为环境变量,如下:

declare -x 变量名称

6、bash的内置变量

除了环境变量和用户自定义的变量之外,bash shell中还会用到很多的内置变量,下面介绍一些常用的内置变量。

BASH -- bash的完整路径,通常是/bin/bash

BASH_VERSION -- bash的版本

BASH_ENV -- 在非交互模式下,会先检查$BASH_ENV是否有指定的启动文件,如果有则先执行它

ENV -- 与BASH_ENV类似,不过是在POSIX模式下,会先检查$ENV是否有指定的启动文件,如果有则先执行它

CDPATH -- cd命令的搜索路径

PATH -- 命令的搜索路径

EUID -- 有效的用户id

FUNCNAME -- 在函数执行期间,即为函数的自身的名称

HOSTNAME -- 主机名

HOSTTYPE -- 主机类型,如i386

OSTYPE -- 执行bash的操作系统类型,如linux-gnu

HOME -- 用户主目录

IFS  --  默认的字段分隔符

OPTARG -- 使用getopts处理选项时,取得的选项的参数

OPTIND -- 使用getopts处理选项时,选项的索引值

OPTERR -- 若将OPTERR设置为1,则getopts发生错误,输出错误信息

$1~$n -- 位置参数,即传入程序或函数的参数,$1即第一个参数,$2为第二个参数,其他类推

$* --   所有的位置参数,并将其看成一个字符串,如”test.sh abc 123“,则$*为”abc 123“

[email protected] --  所有的位置参数,并将其看成一个字符串数组,如”test.sh abc 123“,则$*为”abc 123“

$# --  位置参数的个数

$? --  上一条命令执行结束后的返回值

$$ --  当前bash shell的进程号

$! --  上一个后台程序的进程号

7、调整变量的属性

declare命令不仅可以用来声明变量,还可以用来调整变量的属性,具体用法如下:

-p  显示变量的属性

-a  变量是一个数组

-i   变量是一个整数

-r  变量为只读的

-x  变量为环境变量

时间: 2024-10-06 23:12:15

shell变量与字符串操作的相关文章

Shell中的字符串操作

最近总结了一下shell中关于字符串的一些操作,希望能帮助大家更好的了解shell.在shell中也可以通过awk.sed等外部命令来操作字符串,但是调用这些外部命令处理起来与shell内置操作符的性能相差非常大,所以建议大家尽量使用内置操作符和函数来完成对字符串的操作.废话不多说,下面就来看一下shell中内置的字符串操作符和函数吧. 1.判断读取shell变量的值   表达式 含义 实例 ${var} 变量var的值,同$var [email protected]:~$ var="test&

linux shell学习(字符串操作)--01

http://blog.csdn.net/shuanghujushi/article/details/51298672 在bash shell的使用过程中,经常会遇到一些字符串string的操作,下面是个人的一些使用总结. 一.字符串的定义 用双引号,单引号,或者直接在接在=后,都可以定义一个字符串,如下,定义了三个字符串 str1="this is a string" str2='this is a string' str3=this_is 但双引号和单引号,在bash中还是有区别的

shell 变量、字符串、数组

shell变量 变量定义 变量使用 示例 1: #! /bin/bash var=aaa echo ${var} 执行结果: $ ./demo.sh$ aaa 示例 2: #! /bin/bash var=aaa bbb ccc echo ${var} 执行结果: $ ./demo.sh./demo.sh: line 3: bbb: command not found 示例 3: #! /bin/bash var="aaa bbb ccc"echo ${var} 执行结果: $ ./d

shell中的字符串操作——字符串的切割

default.yaml {default_baseurl: 'http://10.113.10.68:8082'} test.sh a=`cat default.yaml` t=":" index=`awk -v a="$a" -v b=":" 'BEGIN{print index(a,b)}'` diff=${#a}-$index-2 let index=index+1 default_url=`echo ${a:$index:$diff}|

Shell编程从入门到精通-第二章.shell变量

二.Shell变量 2.1.什么是变量 在小学的时候我们学过数学方程式,例如:已知x=1,y=x+1那么y等于多少 在上述的题目中x和y被称为未知数,但是在shell编程里它们是变量名,等号右边的1和x+1是变量的内容,(这里"="被称为赋值) 通过上面的介绍可以得出,变量就是用一个固定的字符串代替更多,更复杂的内容,该内容包含变量.路径.字符串等其他的内容,变量是暂时存储数据的地方和标记,所存储的数据存在内存空间中,通过调用内容空间的变量名字就可以取出变量对应的数据.使用变量最大的好

linux shell 字符串操作(长度,查找,替换)详解

原文地址:http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同     ${var-DEFAULT}

linux shell 字符串操作

转:http://justcoding.iteye.com/blog/1963463 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var}变量var的值, 与$var相同 ${var-DEFAULT}如果var没有被声明, 那么就以$DEFAULT作为其值 *

linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$

Linux Shell字符串操作(长度\查找\替换)详解

在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$