(二)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" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...
随机推荐
- 【UML】类图介绍
1.类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静态模型. 2.类的关系有泛化(Generalization). ...
- C++关于堆的函数
建立堆 make_heap(_First, _Last, _Comp) 默认是建立最大堆的.对int类型,可以在第三个参数传入greater<int>()得到最小堆. 在堆中添加数据 ...
- Thread.currentThread().getContextClassLoader().loadClass(className)和Class.forName(className)的区别
一.正文: 有去看开源框架的童鞋,应该会经常看到如下代码:Thread.currentThread().getContextClassLoader().loadClass(className),那这个 ...
- maven打包遇到的问题
1.javax.servlet.jsp.tagext不存在 maven打包报程序包javax.servlet.jsp.tagext不存在或者maven打包报程序包javax.servlet.jsp不存 ...
- RxJS & Angular
RxJS & Angular https://www.learnrxjs.io/ https://rxjs-cn.github.io/learn-rxjs-operators/ https:/ ...
- G D 3 2 预 处 理 符 号 配 置 中 定 义
Is mainly used in MCU and peripherals to choose, without having to modify macro definitions in the c ...
- Failed with exception MetaException(message:javax.jdo.JDODataStoreException: Error(s) were found while auto-creating/validating the datastore for classes.
hive (db_emp)> load data local inpath '/opt/datas/emp.txt' into table emp_part partition(`date`=' ...
- [Leetcode] Balanced binary tree平衡二叉树
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- 关于session variables 和 global variables
背景 有同学问到这样一个问题:原来的binlog格式是statement,为什么执行了 set global binlog_format='row' 和 set binlog_format='row' ...
- [poj 3281]最大流+建图很巧妙
题目链接:http://poj.org/problem?id=3281 看了kuangbin大佬的思路,还用着kuangbin板子orz http://www.cnblogs.com/kuangb ...