ITPub博客

首页 > 数据库 > 数据库开发技术 > 三分钟让你掌握shell变量

三分钟让你掌握shell变量

原创 数据库开发技术 作者:步步运维步步坑 时间:2024-05-23 10:13:59 0 删除 编辑

bash变量类型

  • 本地变量

  • 局部变量

  • 环境变量

  • 位置变量

  • 内置变量

注意: 对变量进行赋值的时候“=” 两边不能有空格,否则会异常

[root@cvm-172_16_20_121 ~]# bash 1.sh 21.sh: line 3: 3: command not found
1.sh: line 5: c: command not found
[root@cvm-172_16_20_121 ~]# cat 1.sh a=2echo $ab= 3echo $bc =4 echo $c[root@cvm-172_16_20_121 ~]#


本地变量

作用域是整个bash进程都可以使用

命名规范:

  1. 只能含字母、数字和下划线,并且以字母和下划线开头。

  2. 最好不要跟系统已有的环境变量重名

  3. 变量名可充分体现这个变量的作用

局部变量

声明局部变量使用‘local’ 指令。局部变量作用于只在作用范围内生效

[root@cvm-172_16_20_121 ~]# bash 1.sh 1.sh: line 4: local: can only be used in a function1.sh: line 4: local: can only be used in a function[root@cvm-172_16_20_121 ~]# vim 1.sh [root@cvm-172_16_20_121 ~]# cat 1.sh #!/bin/bashfor i in {0..1};do  local a=1  echo $adoneecho $a[root@cvm-172_16_20_121 ~]# 


环境变量

环境变量的作用域是当前shell的主进程和其子进程,不能影响到其父进程,也不会有影响到其他主进程,声明环境变量使用export

export var_name=value

如果变量已经定义,可以只使用变量名 export var_name,即可用下面两种方式声明环境变量:

  1. export var_name=value

  2. var_name=value

export var_name脚本在执行命令时会启动一个子shell环境变量系统自动执行的脚本(非命令行启动)就需要自我定义需要的环境变量(/etc/profile  或者 ~/.bashrc)

位置变量

对参数位置做精准匹配的变量,一般做为脚本入参或者出参设置的时候使用

$1,$2,$3,……cat first.sh test.txt hello$1: first.sh$2: test.txt$3: hello


shift:踢掉参数

shift n:踢掉n个参数,默认踢掉一个参数

注意:$0为调用该脚本的名字,而参数如果作为变量,第10个变量不能直接写$10,而需要写成${10}

特殊变量

$?:上一个命令执行状态的返回值:程序执行可能有两种返回值:

  1. 程序执行结果

  2. 程序状态返回吗(0-255)

0 则为执行正确

1-255 则执行出错(1,2,127系统预留)

可以自定义返回值来获取不同的错误状态

  • $#:获取当前shell命令行中参数的总个数

  • $*:获取当前shell的所有参数 “$1 $2 $3 …,受IFS控制

  • $@:这个程序的所有参数 “$1″ “$2″ “$3″ “…”,不受IFS控制

  • $0 获取当前执行的shell脚本的文件名

  • $n 获取当前执行的shell脚本的第n个参数值,n=1..9

  • $$ 获取当前shell的进程号(PID)

  • $! 执行上一个指令的PID

END


添加博主

微信号|yfq940-


点个关注!!!


原文作者:步步运维步步坑;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-10-08

  • 博文量
    100
  • 访问量
    51710