(二)shell变量
(1)自定义变量
- 定义变量 变量名=变量值 变量名必须以字母或下划线开头,不能数字开头,区分大小写,ip=114.114.114.114
- 引用变量: $变量名 ${变量名}
- 查看变量: echo $变量名 或set(查看所有自定义变量和环境变量)
- 取消变量: unset 变量名
- 作用范围: 仅在当前shell中生效
- 变量赋值之直接赋值
#!/bin/bash
ip=114.114.114.114
if ping -c1 $ip &>/dev/null;then
echo "$ip is up"
else
echo "$ip is down"
fi
- read方式赋值
#!/bin/bash
#read:用户终端输入的值赋予变量ip,-p选项只是给用户一个提示可以省略
read -p "please touch a ip:" ip
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip is up"
else
echo "$ip is down"
fi
- 位置变量赋值:$1 $2 ;执行脚本后面的参数,例如114.114.114.114传给$1,114.114.115.115传给$2
ping -c1 $1 &>/dev/null
if [ $? -eq 0 ];then
echo "$1 is up"
else
echo "$1 is down"
fi
执行脚本:bash ping01.sh 114.114.114.114 114.114.115.115
- 自定义变量只在当前shell生效
在当前shell定义变量:name1=123
cat test.sh
echo $name1
bash test.sh 发现为空,说明定义变量只在当前shell生效,bash方式执行在子shell,说明自定义变量只在当前shell生效,如果想调用,需要使用export name1把变量修改成环境变量
(2)环境变量
- 定义环境变量:
方法一:export 变量名=变量值
方法二:export 自定义变量名
- 引用变量:$变量名 ${变量名}
- 查看环境变量:echo $变量名 或 export
- 取消环境变量:unset 变量名
- 变量作用范围:在当前shell和子shell中有效
系统自带的环境变量: $USER $PWD
(3)位置变量
- 位置变量:不用事先定义
$1 $2 $3 ${10}
(4)预定义变量
$0 脚本名
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的PID
$! 上一个后台进程的PID,例如ls &
$? 上一个命令的返回值,0表示成功,非0表示失败
- 位置变量和预定义变量例子
if [ $# -eq 0 ];then
echo "Usage $(basename $0) file"
exit
fi
if [ ! -f $1 ];then
echo "$1 is error file!"
exit
fi
for ip in $(cat $1)
do
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip is up!"
else
echo "$ip is down!"
fi
done
(5)变量赋值
- 显示赋值:变量名=变量值
ip1=114.114.114.114
name="wang tian"
today1='date +%F'
today2=$(date +%F)
- read方式赋值
read 变量名
read -p "" 变量名
read -t 2 -p "" 变量名
read -n 2 变量名
- 例子:
#!/bin/bash
read -p "请输入你的姓名,性别,年龄 [ e.g wf m 20 ]" name sex age
echo "你的姓名是$name,性别:$sex,年龄:$age"
- 变量引用注意事项
"" :强引用,引用变量
'' :弱引用,不引用变量
- 命令的结果作为变量
命令替换:$() 相当于两个反引号 ,反引号中的shell会被先执行
touch ’date +%F’_file.txt 注意是反引号哦,这里markdown原因我改成单引号了
(二)shell变量的更多相关文章
- Shell基础学习(二) Shell变量
1.数据类型: 字符串 数组 2.变量的命名规范: 只能以a-z或A-Z开头 中间不能有空格,可以使用_ 不能使用标点符号 不能使用shell的关键字 3.变量类型: 环境变量 局部变量 shell变 ...
- shell基础篇(二)-shell变量
1. 定义变量 1).定义变量时,变量名不加美元符号($),如: var="hello world"2).注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同 ...
- Shell脚本笔记(二)Shell变量
Shell变量 一)全局环境变量 全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了.另外全局变量会被子shell的同名变量覆盖. #定义一个 ...
- 二、Shell变量
类型 注释强变量 变量在使用前,必须事先声明,甚至还需要初始化 弱变量 变量用时声明,甚至不区分类型 变量的作用:用来保存变化的数据 变量名 名称固定,由系统设定或用户定义 变量值 根据用户设 ...
- Shell学习(二)Shell变量
一.Shell变量 变量的定义 例子: my_job="Learn Shell" PS:变量名和等号之间不能有空格!!! 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 ...
- 【转】shell学习笔记(二) ——shell变量
在shell中有3种变量:系统变量,环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要设置,用户变量在编程过程中使用量最多. 1 系统变量 变量名 ...
- shell 基础(二)变量
1. shell变量的定义 1)Shell 支持以下三种定义变量的方式: variable=value variable='value' variable="value" 特点 1 ...
- Shell脚本编程(二):shell变量
定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程 ...
- 学习Shell(二)变量
如何给shell脚本传入参数 1.执行“vi test.sh”创建一个新的shell脚本. vi test.sh 2.脚本test.sh的内容如下: #!/bin/sh name=$ echo &qu ...
- 二、Shell 变量
Shell 变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...
随机推荐
- [剑指Offer] 31.整数中1出现的次数
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...
- oracle补充
索引 索引是若干数据行的关键字的列表,查询数据时,通过索引中的关键字可以快速定位到要访问的记录所在的数据块,从而大大减少读取数据的I/O次数,因此可以显著的提高性能 创建索引的SQL 把下面表中的na ...
- Intellij IDEA 系统路径配置
在使用IDEA启动Tomcat的时候,会读取系统路径,默认路径可能不是我们想要的,可以修改 C:\MyPrograms\IntelliJ IDEA 14.0.1\bin\idea.properties ...
- hdu 3496 Watch The Movie (二维背包)
Watch The Movie Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)T ...
- [ZOJ3899]State Reversing
[ZOJ3899]State Reversing 试题描述 Yakumo Yukari is with no doubt one of the most powerful youkai in Gens ...
- Android 多线程: 完全解析线程池ThreadPool原理&使用
目录 1. 简介 2. 工作原理 2.1 核心参数 线程池中有6个核心参数,具体如下 上述6个参数的配置 决定了 线程池的功能,具体设置时机 = 创建 线程池类对象时 传入 ThreadPoolExe ...
- vector 基础2
size :返回有效元素个数 max_size :返回 vector 支持的最大元素个数 resize :改变有效元素的个数 capacity :返回当前可使用的最大元素内存块数(即存储容量) ...
- JQuery拖拽改变元素的尺寸
"元素拖拽改变大小"其实和"元素拖拽"一个原理,只是所动态改变的对象不同而已,主要在于 top.left.width.height 的运用,相对实现起来也非常容 ...
- 第五届华中区程序设计邀请赛暨武汉大学第十四届校赛 网络预选赛 A
Problem 1603 - Minimum Sum Time Limit: 2000MS Memory Limit: 65536KB Total Submit: 564 Accepted: ...
- fastjson对json操作
fastjson对json字符串JSONObject和JSONArray互相转换操作示例 fastjson的方法: Fastjson API入口类是com.alibaba.fastjson.JSON ...