Shell自动化脚本【variable 变量 】

变量一般使用大写

1.变量名的命名规则

1.只包含字母、数字和下划线—— 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符。一般大写

2.不能以数字开头—— 变量名不能以数字开头,但可以包含数字。

3.避免使用 Shell 关键字—— 不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆。

4.使用大写字母表示常量—— 习惯上,常量的变量名通常使用大写字母,例如 PI=3.14。

5.避免使用特殊符号—— 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突。

6.避免使用空格—— 变量名中不应该包含空格,因为空格通常用于分隔命令和参数。

2.变量的类型

declare:声明

shell本身不支持小数。(需要借助bc工具)

declare –a name

数组array

declare –f name

方法function

declare –F name

同上,但只显示function的名字

declare –i name

整数integer

declare –r name

只读,相当于readonly name

declare –x name

export, 即不仅在当前的环境中起作用,也在外部的shell环境中起作用

3.变量的使用

使用变量时加 $ 符号

3.1.赋值

# 正确的赋值
t1="变量t1"
# 有可能会导致错误
t1 = "变量t1

# 取消变量
unset t1

3.2.打印

t1="变量t1"
echo $t1      
echo ${t1}    #加花括号是为了帮助解释器识别变量的边界

3.3.改变变量

my_name="alan"    #第一次赋值
echo ${my_name} 
my_name="tom"
echo ${my_name}     #打印——tom

3.4.只读变量readonly

t1="I am t1"
readonly t1
t1="temp1"      #报错——This variable is read only.
#合起来——
readonly t3="I am t3"
t3="temp3"      #报错——This variable is read only.

unset 命令不能删除 只读变量 ——

4.特殊变量【重点】

4.1.预定义变量

$$ ——Shell本身的PID

$! ——最后运行的后台命令的PID

$? ——最后运行的命令的结束代码(返回值)

$- ——使用Set命令设定的Flag一览

$* ——所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

$@ ——所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

$# ——添加到Shell的参数个数

$HOME——当前用户的主目录。

$USER——当前用户的用户名。

$PATH——可执行文件的搜索路径。

$PWD——当前工作目录。

$OLDPWD——前一个工作目录。

$SHELL——当前使用的Shell。

# 编写脚本——test.sh
#!/bin/bash
#Author: user
echo "脚本名称——$0"
echo "第一个参数——$1"
echo "所有参数 (作为单字符串显示)——$*"
echo "所有参数 (作为独立字符串显示)——$@"
echo "参数个数——$#"
echo "最后执行的命令的退出状态——$?"
echo "当前Shell的进程ID——$$"
sleep 10 &
ps aux |grep sleep
echo "最后运行的后台命令的进程ID——$!"
echo "当前用户的主目录——$HOME"
echo "当前用户的用户名——$USER"
echo "可执行文件的搜索路径——$PATH"
echo "当前工作目录——$PWD"
echo "当前使用的Shell——$SHELL"

bash test.sh 1 2 3 4 5 6 7

4.2.位置变量

$1~$n ——系统内置变量——添加到Shell的各参数值。$1是第1参数、$2是第2参数…

$1 在shell中称为“位置参数”,表示传入的第1个参数(第1个入参)

用在shell脚本主体中,表示shell脚本的第1个入参。

用在shell脚本函数里,表示函数的第1个入参。

  • $0 就是你写的shell脚本本身的名字
  • $1 是你给你写的shell脚本传的第一个参数
  • $2 是你给你写的shell脚本传的第二个参数
  • ${10} 第10个及以上的参数,需要使用大括号括起来。

test -z $1 是一个判断表达式,用于判断$1的值是否为空字符串。若为空,则结果为true;否则为false。

vim test.sh
#
#!/bin/bash
#Author: user
echo $0       # 打印脚本文件名
echo "第一个变量——" $1
echo "第三个变量——" $3
echo "第十个变量——" ${10}
echo "脚本名称——" $0

bash test.sh 1 2 3 4 5 6 7 8 9 10

4.3.环境变量

# 查看当前的环境变量
env

# 临时设置环境变量(临时设置的环境变量仅在当前Shell会话中有效)
export VAR="Hello world"
echo $VAR

# 永久设置当前用户的环境
vim ~/.bashrc
# 或
vim ~/.bash_profile

#永久设置全局的环境变量
vim /etc/profile

5.交互自定义变量

read 命令用于从标准输入(通常是键盘)读取一行输入,并将其分配给一个或多个变量。

参数解释:

-p:在读取输入之前显示提示。

-t:设置超时时间(秒)。

-n:读取指定字符数后立即返回,而不是等待换行符。

-r:原样读取输入,不解释反斜杠。

-s:隐藏输入的字符(通常用于密码输入)。

vim test.sh
#
#!/bin/bash
#Author: user
read -p "输入用户名1: " NAME1
echo ${NAME1}
read -n3 -p "输入用户名:-n3 : " NAME2
echo " : ${NAME2}"
read -s -p "输入用户名: -s: " NAME3
echo " : ${NAME3}"
read -t5 -p "输入用户名: -t5: " NAME4
echo " : ${NAME4}"

6.相关符号:

1.双引号:双引号将变量值中的空格,转移为一个普通的字符

tiem="I AM ALAN"
echo $time

2.反引号:优先执行

time=date
echo $time
#
time=`date`
echo $time

3.小括号:可以使用命令替换,将命令的输出赋值给变量

time=$(date)
echo $time

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值