当前位置: 首页 > news >正文

LinuX---Shell---变量

 系统预定义变量

常用系统变量

PATH、HOME、PWD、SHELL、USER等

获取变量的值

语法:$变量名

$和变量名之间不能有空格。 

案例实操

查看系统变量的值

feng@ubuntu:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
feng@ubuntu:~$ echo $HOME
/home/atguigu

显示当前Shell中所有变量:set

feng@ubuntu:~$ set

BASH=/bin/bash‘
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
……

自定义变量

基本语法

  1. 定义变量:变量名=变量值,注意,=号前后不能有空格
  2. 撤销变量:unset 变量名。
  3. 声明静态变量:readonly变量,注意:不能重新赋值,不能unset。

变量定义规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
  2. 等号两侧不能有空格。
  3. 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
  4. 变量的值如果有空格,需要使用双引号或单引号括起来。
  5. 最右侧分号可有可无,一般都不写

案例实操

定义变量A

注意:5是字符串

feng@ubuntu:~$ A=5
feng@ubuntu:~$ echo $A
5

给变量A重新赋值

feng@ubuntu:~$ A=feng
feng@ubuntu:~$ echo $A
feng

撤销变量A

feng@ubuntu:~$ A=feng
feng@ubuntu:~$ echo $A
feng

声明静态(只读)的变量B=2,不能修改和unset

feng@ubuntu:~$ readonly B=2
feng@ubuntu:~$ echo $B
2
feng@ubuntu:~$ B=9
bash: B: 只读变量
feng@ubuntu:~$ unset B
bash: unset: B: 无法取消设定:只读variable

在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

feng@ubuntu:~$ C=1+2
feng@ubuntu:~$ echo $C
1+2

变量的值如果有空格,需要使用双引号或单引号括起来

feng@ubuntu:~$ D=I love banzhang
找不到命令 “love”,但可以通过以下软件包安装它:
sudo snap install love  # version 11.2+pkg-d332, or
sudo apt  install love  # version 11.3-1
输入 "snap info love" 以查看更多版本。
feng@ubuntu:~$ D="I like banzhang"
feng@ubuntu:~$ echo $D
I like banzhang

可把变量提升为全局环境变量,可供其他Shell程序使用

语法:export 变量名

feng@ubuntu:~$ vim helloworld.sh

在helloworld.sh文件中增加echo $B。

#!/bin/bash

echo "helloworld"
echo $B

保存退出。

feng@ubuntu:~$ B=3
feng@ubuntu:~$ ./helloworld.sh 
helloworld

发现并没有打印输出变量B的值。

feng@ubuntu:~$ export B
feng@ubuntu:~$ ./helloworld.sh 
helloworld
3
注意:必须在同一个窗口中运行测试(必须得是在同一个进程中)

发现3出现了 

特殊变量

$n---外部写入脚本内

基本语法

$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}。)

案例实操

feng@ubuntu:~$ vim parameter.sh

写入以下内容。

#!/bin/bash
echo '==========$n=========='
echo $0 
echo $1 
echo $2

保存退出。

feng@ubuntu:~$  bash ./parameter.sh cls xz
==========$n==========
./parameter.sh
cls
xz

$#---可以获得传了多少个参数

基本语法

$# (功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。)。

案例实操

feng@ubuntu:~$ vim parameter.sh

#!/bin/bash
echo '==========$n=========='
echo $0 
echo $1 
echo $2
echo '==========$#=========='
echo $#

feng@ubuntu:~$ ./parameter.sh cls xz
==========$n==========
./parameter.sh
cls
xz
==========$#==========
2

​$*、$@---对于多个参数可以视为一个整体

基本语法

$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体。)

$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待。)---在for执行时,会被拆分

案例实操

feng@ubuntu:~$ vim parameter.sh

脚本中写入以下内容。

#!/bin/bash
echo '==========$n=========='
echo $0 
echo $1 
echo $2
echo '==========$#=========='
echo $#
echo '==========$*=========='
echo $*
echo '==========$@=========='
echo $@

保存退出。

feng@ubuntu:~$ ./parameter.sh a b c d e f g
==========$n==========
./parameter.sh
a
b
==========$#==========
7
==========$*==========
a b c d e f g
==========$@==========
a b c d e f g

说明

$*和$@的区别需要结合循环说明。

$?---判别

基本语法

$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确。)

案例实操

判断helloworld.sh脚本是否正确执行

feng@ubuntu:~$ ./helloworld.sh 
hello world
feng@ubuntu:~$ echo $?
0
feng@ubuntu:~$ xxx    #错误命令
feng@ubuntu:~$ echo $?
127

相关文章:

  • A1000学习笔记
  • Flask使用Blueprint注册管理路由
  • SQLMesh 系列教程:解锁SQLMesh的宏与变量魔法
  • 日志存储与分析
  • CSS3-流星雨
  • 大型语言模型与强化学习的融合:迈向通用人工智能的新范式——基于基础复现的实验平台构建
  • 办公自动化:使用 Python 生成 Word 文件:自动生成数据库文档 Word 文件
  • 从PDF文件中提取数据
  • 基于 Verilog 的时序设计:从理论到实践的深度探索
  • SpringMVC(七)数据校验+VO++脱敏
  • 五模型对比!Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量时间序列预测
  • 【sql靶场】第13、14、17关-post提交报错注入保姆级教程
  • C# WPF 基础知识学习(三)
  • 深度解析扣减系统设计:从架构到实践
  • 【Agent】OpenManus-Agent-Memory详细设计
  • 安装配置Anaconda,配置VSCode
  • 数据分析项目:基于LSTM的微博评论情感分析
  • 2.5[frontEnd]
  • Java 集合框架中 `List` 接口及其子类的详细介绍,并用 UML 图表展示层次结构关系,用表格对比各个类的差异。
  • Notepad++插件:快捷选择成对括号之间的内容
  • 毕设做网站太简单/志鸿优化网官网
  • 广告型网站怎么做的/免费制作网站平台
  • _沈阳做网站/在哪个网站可以免费做广告
  • 重庆代还信用卡网站建设/北京网站优化服务
  • 公司网站开发和设计 怎么开票/北京企业推广
  • seo网站建设/排名优化关键词公司