(二)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" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...
随机推荐
- 【EasyNetQ】- 使用Future Publish调度事件
许多业务流程要求在将来某个日期安排事件.例如,在与客户进行初次销售联系后,我们可能希望在将来的某个时间安排跟进电话.EasyNetQ可以通过其Future Publish功能帮助您实现此功能.例如,这 ...
- 在C/C++程序中打印当前函数调用栈
前几天帮同事跟踪的一个程序莫名退出,没有core dump(当然ulimit是打开的)的问题.我们知道,正常情况下,如果程序因为某种异常条件退出的话,应该会产生core dump,而如果程序正常退出的 ...
- hw_breakpoint使用方法
hw_breakpoint 使用方法 kprobe在 do_page_fault 函数中不能使用,那么如果真要在这里打点怎么办呢?看看hw_breakpoint是否可用: 事实证明,即便 hw_bre ...
- idea tomcat 启动报错 org.apache.catalina.core.StandardService.initInternal Failed to initialize connector
org.apache.catalina.core.StandardService.initInternal Failed to initialize connector org.apache.cata ...
- BZOJ 3876:支线剧情(有下界最小费用最大流)
3876: [Ahoi2014]支线剧情 Description [故事背景]宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧 ...
- BZOJ4590 SHOI2015自动刷题机(二分答案)
二分答案,分别往尽量小的和尽量大的二分即可. #include<iostream> #include<cstdio> #include<cmath> #includ ...
- 【题解】[国家集训队]Crash的数字表格 / JZPTAB
求解\(\sum_{i = 1}^{n}\sum_{j = 1}^{m}lcm\left ( i,j \right )\). 有\(lcm\left ( i,j \right )=\frac{ij}{ ...
- SQL语言:结构化查询语言
SQL语言:结构化查询语言 程序员或者DBA(数据库管理员)使用SQL和DBBSM进行交互,操纵数据库中的资源 分类: 1.DDL 数据定义语言 结构 create 创建 database ta ...
- BZOJ 2502: 清理雪道 | 有上下界最小流
#include<cstdio> #include<algorithm> #include<cstring> #include<queue> #defi ...
- The 13th Zhejiang Provincial Collegiate Programming Contest - C
Defuse the Bomb Time Limit: 2 Seconds Memory Limit: 65536 KB The bomb is about to explode! Plea ...