shell脚本编程学习笔记2——Bash变量

1,变量简介

1,计算机内存单元2,设置规则字母数组下划线组成,不能以数字开头Bash中,默认类型字符串型,变量类型可修改

2,Bash变量规则

1,变量用等号连接值,等号左右两侧不能有空格。 (Linux中空格代表命令之间的区分)
2,变量的值如果有空格,需要使用单引号或双引号包括。
3,在变量的值中,可以使用“\”转义符
4,如果需要变量拼接,那么可以进行变量值的叠加。不过变量需要用双引号包含 “$变量名”或用${变量名}包含。
5,如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令
6,环境变量名建议大写,便于区分

3,变量分类

1,用户自定义变量,保存环境当前shell
2,环境变量,主要保存和系统操作环境相关数据
3,位置参数变量,主要用来向脚本传递数据,不可自定义,作用固定
4,预定义变量,Bash中定义好的变量,变量名不可自定义,作用固定

1,用户自定义变量

1,简介

在本地定义的变量,只适用于当前shell

2,简单实例:

    [root@iZwz9h901rvv69020rk7fsZ sh]# name="dun huang"[root@iZwz9h901rvv69020rk7fsZ sh]# echo "$name"dun huang[root@iZwz9h901rvv69020rk7fsZ sh]# name="$name"' de tuo ling'[root@iZwz9h901rvv69020rk7fsZ sh]# echo "$name"dun huang de tuo ling[root@iZwz9h901rvv69020rk7fsZ sh]#

3,操作:

    变量调用 [root@localhost ~]# echo $name变量查看 [root@localhost ~]# set变量删除 [root@localhost ~]# unset name

2,环境变量

1,简介

用户自定义变量只在当前的Shell中生效, 而环境变量会在当前Shell和这个Shell的所 有子Shell当
中生效。如果把环境变量写入 相应的配置文件,那么这个环境变量就会 在所有的Shell中生效

2,设置

export 变量名=变量值      # 申明变量
env                     # 查询变量
unset 变量名           # 删除变量注意:系统常见环境变量1,$PATH[root@localhost ~]# echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin: /sbin:/bin:/usr/sbin:/usr/bin:/root/bin2,PS1PS1:定义系统提示符的变量 \d:显示日期,格式为“星期 月 日” \h:显示简写主机名。如默认主机名“localhost” \t:显示24小时制时间,格式为“HH:MM:SS” \T:显示12小时制时间,格式为“HH:MM:SS” \A:显示24小时制时间,格式为“HH:MM” \u:显示当前用户名 \w:显示当前所在目录的完整名称 \W:显示当前所在目录的最后一个目录 \#:执行的第几个命令 \$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户 会显示提示符为“$

3,实例

[root@localhost ~]# PS1='[\u@\t \w]\$ '
[root@04:50:08 /usr/local/src]#PS1='[\u@\@ \h \# \W]\$‘
[root@04:53 上午 localhost 31 src]#PS1='[\u@\h \W]\$ '

3,位置参数变量

1,简介

$n      n为数字,$0代表命令本身,$1-$9代表第一 到第九个参数,十以上的参数需要用大括号 包含,如${10}.
$*      这个变量代表命令行中所有的参数,$*把所 有的参数看成一个整体
$@      这个变量也代表命令行中所有的参数,不过 $@把每个参数区分对待
$#      这个变量代表命令行中所有参数的个数

2,实例

#!/bin/bash
num1=$1
num2=$2 sum=$(( $num1 + $num2))
# 变量 sum 的和是 num1 加 num2
echo $sum
# 打印变量sum 的值#!/bin/bash
echo "A total of $# parameters"
# 使用 $# 代表所有参数的个数
echo "The parameters is: $*"
# 使用 $* 代表所有的参数
echo "The parameters is: $@"
# 使用 $@ 也代表所有参数#!/bin/bash
for i in "$*"
#$* 中的所有参数看成是一个整体,所以这个 for 循环只会循环一次do                 echo "The parameters is: $i"         done
x=1
for y in "$@"
#$@ 中的每个参数都看成是独立的,所以“ $@ ”中有几个参数,就会循环几次do                 echo "The parameter$x is: $y"                 x=$(( $x +1 ))         done

4,预定义变量

1,简介

$? 最后一次执行的命令的返回状态。如果这个变 量的值为0,证明上一个命令正确执行;如果 这个变量的值为非0(具体是哪个数,由命令 自己来决定),则证明上一个命令执行不正确 了。
$$  当前进程的进程号(PID)
$!  后台运行的最后一个进程的进程号(PID)

2,实例

#!/bin/bash
echo "The current process is $$"
# 输出当前进程的 PID 。
# 这个 PID 就是 variable.sh 这个脚本执行时,生成的进程的 PID   find /root -name hello.sh &
# 使用 find 命令在 root 目录下查找 hello.sh 文件
# 符号 & 的意思是把命令放入后台执行,工作管理我们在系统管理章节 会详细介绍echo "The last one Daemon process is $!"

3,接受键盘输入

shell脚本编程学习笔记2(xdl)——Bash变量相关推荐

  1. shell脚本编程学习笔记3(xdl)——Bash变量的运算与测试

    Bash变量的运算与测试 1,数值运算和运算符 declare申明变量类型也就是说变量运算没有申明的时候,会以字符串形式的拼接, 只有把变量声明为数值型的时候才可以运算,申明变量为数值型有 三种方法方 ...

  2. shell脚本编程学习笔记4(xdl)——Bash常见环境变量

    shell脚本编程学习笔记4--Bash常见环境变量 非专业运维,例如开发人员,环境变量熟悉常见的,了解不常见的即可. 1,简介 环境变量配置文件中主要是定义对系统的 操作环境生效的系统默认环境变量, ...

  3. shell脚本编程学习笔记1(xdl)——shell基础与Bash基本功能()

    shell脚本编程学习笔记1--shell基础与Bash基本功能 1,简介: 1,Shell就是一个命令行解释器,用以连接输入设别和内核. 2,Shell是解 释执行的脚本语言,在Shell中可以直接 ...

  4. shell脚本编程学习笔记6(xdl)——字符串截取命令

    shell脚本编程学习笔记6--字符串截取命令 1,cut命令 [root@localhost ~]# cut [选项] 文件名-f 列号,表示提取第几列-d 分隔符,按照指定的分隔符分割列注意:默认 ...

  5. shell脚本编程学习笔记8(XDL)——流程控制和循环

    shell脚本编程学习笔记8--流程控制和循环 1,if语句 1,框架 1,单分支:if [条件判断式] ;thenprogramfiif [条件判断式]thenprogramfi注意:if语句使用f ...

  6. shell脚本编程学习笔记5(xdl)——正则表达式

    shell脚本编程学习笔记5--正则表达式 1,简介 正则表达式,用来在文件中匹配符合条件的字符串,包含匹配.注意是文件中选择字符串,和通配符是 不同的.grep,awk,sed等命令可以支持正则表达 ...

  7. shell脚本编程学习笔记7(XDL)——字符处理命令和条件判断

    shell编程学习笔记--字符处理命令和条件判断 1,字符处理 [root@localhost ~]# sort [选项] 文件名 选项: -f: 忽略大小写 -n: 以数值型进行排序,默认使用字符串 ...

  8. shell脚本编程 学习笔记

    1.shell简介 1.1 什么是shell Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...

  9. Linux Shell脚本编程学习笔记和实战

    http://www.1987.name/141.html shell基础 终端打印.算术运算.经常使用变量 Linux下搜索指定文件夹下特定字符串并高亮显示匹配关键词 从键盘或文件里获取标准输入 [ ...

最新文章

  1. flask 学习实战项目实例
  2. Leet Code OJ 283. Move Zeroes [Difficulty: Easy]
  3. SAP Spartacus build error之后的retrigger方式
  4. gRPC真要取代WebApi了,你还学得过来吗?
  5. 2021抖音汽车生态报告
  6. 传智播客--itcastbbs(四)
  7. mysql时间戳_MySQL 时间戳(Timestamp)函数
  8. 单元测试和sit测试和uat测试
  9. FillForm网页表单填写插件(用于火狐浏览器,自动填表,自动表单,填写表单)
  10. 如何在微信公众号优雅地添加代码
  11. 一键调整PCB丝印,超级好用
  12. 杭州好玩景点攻略76
  13. 安装Altera USB-Blaster驱动程序遇到的问题
  14. USYD悉尼大学DATA 2002 【R语言学习2】在 Tidyverse 中与数据通信 (Communicating with Data in the Tidyverse)
  15. Romax Nexus—机电一体传动系统设计与仿真平台
  16. 【论文】联邦学习区块链 论文集(一)
  17. 在VMware中安装新版Ubuntu后,无法跨虚拟机复制粘贴和拖拽文件的解决方法
  18. Android实现网络下载二(多任务下载--支持断点续传)
  19. 数据分析思维分析方法和业务知识——实战案例跨境电商行业
  20. 停车场管理问题——算法与数据结构

热门文章

  1. 【论文阅读报告】 Real-time Personalization using Embeddings for Search Ranking at Airbnb
  2. MATLAB数据保存
  3. 计算机考研 保研夏令营 经验 经历 经验总结
  4. 依靠大数据 社会化协同
  5. mysql compact_MYSQL中InnoDB和ROW_FORMAT=COMPACT - wangqiaowqo - JavaEye技术网站
  6. avr单片机c语言 右移,AVR左移右移递增减流水灯
  7. MySQL 外键约束 以及 级联操作
  8. 扫一扫功能在手机便签的哪里
  9. JAVA导入大量数据的Excel,如何分块读取并避免内存溢出?
  10. 读万卷书,写万行代码