IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 浅学一下Shell脚本(3)--变量 -> 正文阅读

[系统运维]浅学一下Shell脚本(3)--变量

一.Shell中的变量

1.变量的定义规则

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线 _。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。
  • 环境变量建议大写,便于区分

2.bash中的引号

  • 双引号"" :会把引号的内容当成整体来看待,允许通过$符号引用其他变量值。
  • 单引号’’ :会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符
  • 反撇号`` :反撇号和$()一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用
[root@server ~]# echo "$(hostname)"
server
[root@server ~]# echo '$(hostname)'
$(hostname)

[root@server ~]# echo $(date +%F)
2022-04-12
[root@server ~]# echo `date +%F`
2022-04-12

3.自定义变量

自定义变量是由系统用户自己定义的变量,只在用户自己的 Shell 环境中有效,因此又称为本地变量。

# 1.定义
yourname="laowang"		
#注意:变量名和等号之间不能有空格!

# 2.使用
echo $yourname
echo ${yourname}		
# 花括号是为了帮助解释器识别变量的边界
# 推荐给所有变量加上花括号

# 3.删除
unset yourname

4.特殊的Shell变量

☆环境变量

所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。

env				# 查看当前用户的环境变量
set				# 查询当前用户的所有变量(临时变量与环境变量)
export			# 将当前变量变成环境变量
#1.环境级别 
export a=1 
#在环境关闭后失效 

#2.用户级别(针对当前用户)
vim ~/.bash_profile 
export a=1 

source ~/.bash_profile 

#3.系统级别(针对所有用户)
vim /etc/profile 
export a=2

source /etc/profile 


用户登录系统读取相关文件的顺序:
/etc/profile——>$HOME/.bash_profile——>$HOME/.bashrc
——>/etc/bashrc——>$HOME/.bash_logout
  • PATH变量用于设置可执行程序的默认搜索路径,当仅指定文件名称来执行命令程序时,Linux 系统将在 PATH 变量指定的目录范围查找对应的可执行文件,如果找不到则会提示“command not found”。
  • 若希望能直接通过文件名称来运行脚本,可以 修改 PATH 变量(/etc/profile,$HOME/.bash_profile) 以添加搜索路径。

☆系统变量(内置bash中变量)

系统变量说明
$$当前所在进程的进程号
$!后台运行的最后一个进程号
$?上一条命令执行后的返回值,当返回值为0时表示执行正常,非0值表示执行异常
$*脚本后面所有参数,参数当成一个整体输出,每一个变量参数之间以空格隔开
$@脚本后面所有参数,参数是独立的
$#脚本后面接的参数的个数
$0当前执行的进程/程序名
$1~$9位置参数变量
${10}~${n}扩展位置参数变量 第10个位置变量必须用{}大括号括起来

☆只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

#!/bin/bash
myUrl="https://www.google.com"
readonly myUrl
myUrl="https://www.baidu.com"

#这个脚本运行结果如下
/bin/sh: NAME: This variable is read only.

二.脚本的传参

1.非交互式传参

运行脚本时,直接在后面跟参数,多个参数以空格隔开。

[root@server ~]# cat para.sh
#!/bin/bash
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

[root@server ~]# chmod +x para.sh
[root@server ~]# ./para.sh 1 2 3
执行的文件名:./para.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

2.交互式传参

read [选项][变量名]
#选项:
-a:后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认以空格为分割符。
-p:“提示信息”:在等待read输入时,输出提示信息
-t:秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n:数字:read命令只接受指定的字符数,就会执行
-s:隐藏输入的数据,适用于机密信息的输入

#变量名:
可以自定义,如果不指定变量名,会把输入保存入默认变量REPLY.

案例:

#!/bin/bash

read -t 30 -p "Please input your name: " name
echo "Name is $name"

read -s -t 30 -p "Please enter your passwd: " passwd
echo -e "\n"			# -e表示开启转义
echo "Your passwd is $passwd"

read -n 1 -t 30 -p "Please select your gender[M/F]:" gender
echo -e "\n"
echo "Sex is $gender"

三.命令的别名设定

alias xie='vim'		#临时设定 

vim ~/.bashrc		#只针对当前用户生效 
alias xie='vim'		

vim /etc/bashrc		#针对所有用户生效 
alias xie='vim' 

unalias xie			#删除当前环境中的alias

四.数组

# 一次赋一个值:
array[0]=v1
array[1]=v2
array[2]=v3


# 一次赋多个值:
array=(var1 var2 var3 var4)
array1=(`cat /etc/passwd`)			#将文件中每一行赋值给array1数组
array2=(`ls /root`)

# 读取数组:
echo ${array[i]}				#i表示元素的下标
echo ${array[*]}				#获取数组里的所有元素
echo ${#array[*]}				#获取数组里所有元素个数
echo ${!array[@]} 				#获取数组元素的索引下标
echo ${array[@]:1:2}    		#访问指定的元素;
								#1代表从下标为1的元素开始获取;
								#2代表获取后面几个元素

五.简单的四则运算

# 默认情况下,shell就只能支持简单的整数运算(+-*/)

Bash shell 的算术运算有四种方式:
# 1. 使用 $(( ))
$((1+1))

# 2. 使用$[ ]
$[1+1]

# 3. 使用 expr 外部程式
expr 3 \* 3					#表达式和运算符之间要有空格,乘号需要转义

# 4. 使用let 命令
let i++

# 要计算小数需要借助bc工具
echo 1+1.5|bc
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:46:32  更:2022-04-15 00:50:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:46:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码