Linux shell学习(2)shell变量

shell变量类型主要分为三种:一般变量、字符串、数组

一般变量(主要为数值)

局部变量

shell中定义变量的方式和python中类似,直接使用赋值符号就可以定义变量
(中间不要有空格)
shell中定义的变量默认类型为 字符串类型

a=123

引用变量的方式有两种:

  • $name:常用的引用变量方法
  • ${name}:当变量后面紧跟了字母或数字的时候使用,为了防止系统把整个$符号后面的字符串都解释为一个变量名字
name=dog
echo "There are many dogs"
echo "There are many $names"
echo "There are many ${name}s"
输出:
There are many dogs
There are many			# 变量有误,输出为空
There are many dogs
  • 注意:echo后面是双引号的时候才会解释变量,单引号的内容认为是原生字符串直接输出
    由于变量默认为字符串,使用变量进行±*/%运算,有下面三种方法:
  1. 使用$((expression))
a=12
b=15
c=$((a+b))
echo $c		#注意使用 $c 来引用变量c
27
  1. 使用let
a=12
b=15
let c=a+b
echo $c
27
  1. 使用declare -i
a=12
b=15
declare -i c=a+b
echo $c
27

只读变量:
使用readonly来创建只读变量,其值不可改变

name="dzzhyk"
readonly name
name="martin"

删除变量:
使用unset来删除变量

a=10
unset a
echo $a
# 输出为空

环境变量

定义环境变量:
export PATH_NAME=/dir/...

为了让环境变量定义生效且一直存在,可以将环境变量写入下面的两个文件的其中一个即可:

/etc/profile
/etc/bashrc

可以把自己的sh文件放在/etc/profile.d文件目录下,可以开机启动

shell变量

  1. $?
    返回一个数字,表示上一条命令的执行情况,如果返回0代表成功,非0则失败,一般用于shell的条件判断
ifconfig eth0 | grep inet
echo $?
# echo的输出结果为0,代表上面的语句执行成功了
如果上一个命令没有得到结果或者得到否定的结果,返回的也不是0,例如:
systemctl status firewalld	# 假设防火墙已经关闭
返回inactive
使用$?得到的结果是3
  1. $RANDOM
    生成4~5位随机整数
echo $RANDOM
1213


shell字符串

字符串可以用双引号、单引号,也可以不用引号


单引号

echo '单引号'
  • 单引号里面不解释变量,按照原样输出
  • 单引号里面不能出现单个单引号,但是可以成对出现(字符串的拼接)
echo 'abc'def'ghi'
abcdefghi

双引号

echo "双引号"
  • 双引号内解释变量,如果变量不存在就会输出空
  • 双引号内部不能出现多个双引号,但是可以成对出现,也是拼接字符串
echo "abc"def"ghi"
abcdefghi

获取字符串长度

str="dzzhyk"
echo "${#str}"
6

提取子字符串
从索引1位置开始往后取3个字符

str="dzzhyk"
echo "${str:1:3}"
zzh


shell数组

shell数组的下标范围是0~n
创建数组

array=(1 2 3 4 5)
array[0]=1
array[2]=2	
array[100]=99	# 可以使用非连续下标创建数组,没有限制

使用数组元素

echo "${array[1]}"
2

使用@或*符号可以获取数组中的所有下标

echo "${array[@]}"
echo "${array[*]}"
1 2 3 4 5

获取数组的长度

echo "#${array[*]}"
5

获取数组中某个元素的长度:标注特定的下标即可

echo "#${array[2]}"
1
原创文章 187 获赞 29 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_43826242/article/details/104186082