Shell脚本语法与应用(二)

本文深入解析Linux中变量的定义与使用,包括本地变量、环境变量、局部变量及位置变量,并详细介绍特殊变量的功能,如$#、$*、$@、$$、$?等,同时涵盖数组的定义与引用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、变量定义

1.1、本地变量

新建一个打印输出的简单脚本test02.sh

#!/bin/bash

myName=zhangsan

echo "myName的值为:"$myName

可见只能在脚本中执行才能获取变量值

[root@localhost shell]# bash test02.sh 
myName的值为:zhangsan
[root@localhost shell]# echo $myName

[root@localhost shell]# 

1.2、环境变量

test02.sh定义一个打印变量yourName,但是不在脚本中赋值

#!/bin/bash

myName=zhangsan

echo "myName的值为:"$myName

echo "yourName的值为:"$yourName

在外部使用export yourName=lisi进行赋值,再执行bash test02.sh,可见yourName获取到了环境变量的值

[root@localhost shell]# export yourName=lisi
[root@localhost shell]# bash test02.sh 
myName的值为:zhangsan
yourName的值为:lisi

1.3、局部变量

test02.sh定义一个函数,则内部变量为局部变量

myfunc(){
myvar=99
echo $myvar
}
echo $myvar #访问不到

1.4、位置变量

test02.sh定义两个参数输出

echo "参数1:"$1
echo "参数2:"$2

执行bash test02.sh wangwu zhaoliu,表示执行脚本同时传入两个参数,分别对应$1$2,然后会顺序打印输出

[root@localhost shell]# bash test02.sh wangwu zhaoliu
参数1:wangwu
参数2:zhaoliu

2、特殊变量

2.1、$#(位置参数个数)

test03.sh中执行echo $#

#!/bin/bash

echo $#

执行脚本式传入3个参数,则会被脚本中的$#获取参数个数

[root@localhost shell]# bash test03.sh a b c
3

2.2、$*(参数列表)

双引号引用为一个字符串,如"a b c d e",所有的参数作为一个字符串,5 个参数作为一个字符串

2.3、$@(参数列表)

双引号引用为单独的字符串, 如"a" “b” “c” “d” “e”,所有的参数作为单个的字符串,5 个参数作为五个字符串

2.4、$$(当前 shell 的 PID)

$BASHPID为当前pid的真实值

[root@localhost shell]# echo 'a' | echo $$ 
1822
[root@localhost shell]# echo 'a' | echo $BASHPID
2338
[root@localhost shell]# ps aux | grep bash
root       1822  0.0  0.6  26748  5196 pts/0    Ss   12:19   0:00 -bash
root       2340  0.0  0.1  12320  1040 pts/0    R+   15:38   0:00 grep --color=auto bash

2.5、$?(上一个命令的退出状态)

用来判断脚本中某个命令是否成功执行了
0表示上个命令正常执行

[root@localhost shell]# ls
1.txt  test01.sh  test02.sh  test03.sh  tmp
[root@localhost shell]# echo $?
0

非0表示上个命令非正常执行

[root@localhost shell]# ls /aabbcc
ls: 无法访问'/aabbcc': 没有那个文件或目录
[root@localhost shell]# echo $?
2

3、数组

3.1、定义

定义一个包含3个元素的数组name

[root@localhost shell]# name=('zhangsan' 'lisi' 'wangwu')

3.2、引用

引用输出所有元素值,@表示取所有值

[root@localhost shell]# echo ${name[@]}
zhangsan lisi wangwu

根据下标输出元素值,[数字]表示下标,从0开始计算

[root@localhost shell]# echo ${name[1]} ${name[0]} ${name[2]}
lisi zhangsan wangwu

一文搞定Linux常见用法(汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值