(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变量的更多相关文章

  1. Shell基础学习(二) Shell变量

    1.数据类型: 字符串 数组 2.变量的命名规范: 只能以a-z或A-Z开头 中间不能有空格,可以使用_ 不能使用标点符号 不能使用shell的关键字 3.变量类型: 环境变量 局部变量 shell变 ...

  2. shell基础篇(二)-shell变量

    1. 定义变量 1).定义变量时,变量名不加美元符号($),如: var="hello world"2).注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同 ...

  3. Shell脚本笔记(二)Shell变量

    Shell变量 一)全局环境变量 全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了.另外全局变量会被子shell的同名变量覆盖. #定义一个 ...

  4. 二、Shell变量

    类型     注释强变量 变量在使用前,必须事先声明,甚至还需要初始化 弱变量 变量用时声明,甚至不区分类型 变量的作用:用来保存变化的数据 变量名 名称固定,由系统设定或用户定义 变量值 根据用户设 ...

  5. Shell学习(二)Shell变量

    一.Shell变量 变量的定义 例子: my_job="Learn Shell" PS:变量名和等号之间不能有空格!!! 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 ...

  6. 【转】shell学习笔记(二) ——shell变量

    在shell中有3种变量:系统变量,环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要设置,用户变量在编程过程中使用量最多. 1 系统变量  变量名 ...

  7. shell 基础(二)变量

    1. shell变量的定义 1)Shell 支持以下三种定义变量的方式: variable=value variable='value' variable="value" 特点 1 ...

  8. Shell脚本编程(二):shell变量

    定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程 ...

  9. 学习Shell(二)变量

    如何给shell脚本传入参数 1.执行“vi test.sh”创建一个新的shell脚本. vi test.sh 2.脚本test.sh的内容如下: #!/bin/sh name=$ echo &qu ...

  10. 二、Shell 变量

    Shell 变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...

随机推荐

  1. lnmp1.4,400,500,错误

    Thinkphp5或其他主流框架,入口文件未放在根目录下,比如Thinkphp5 入口文件放在/public/index.php vhost需要指向/public目录 一键安装包通常会报 open_b ...

  2. adoop集群动态添加和删除节点

    hadoop集群动态添加和删除节点说明 上篇博客我已经安装了Hadoop集群(hadoop集群的安装步骤和配置),现在写这个博客我将在之前的基础上进行节点的添加的删除. 首先将启动四台机器(一主三从) ...

  3. BZOJ4415 SHOI2013发牌(线段树)

    似乎是noip2017d2t3的一个部分分.用splay的话当然非常裸,但说不定会被卡常.可以发现序列中数的(环上)相对位置是不变的,考虑造一棵权值线段树维护权值区间内还有多少个数留在序列中,每次在线 ...

  4. [洛谷P4291][HAOI2008]排名系统

    题目大意:三种操作: $+Name\;Socore:$上传最新得分记录,把以前的记录删除. $?Name:$ 查询玩家排名.如果两个玩家的得分相同,则先得到该得分的玩家排在前面. $?Index:$ ...

  5. POJ3660:Cow Contest(Floyd传递闭包)

    Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16941   Accepted: 9447 题目链接 ...

  6. SQLNET跟踪tnsping过程

    原文地址:SQLNET跟踪tnsping过程 作者:yingyifeng306 sqlnet是oracle提供的与网络层面交互的一个工具,比如如何解析客户端发起的连接,如何对客户端发起的连接进行辨别, ...

  7. CVE-2016-6662 mysql RCE测试

    参考:http://bobao.360.cn/learning/detail/3027.html ,我尝试第一种方法 1.先修改mysql_hookandroot_lib.c里面的反弹地址和端口: # ...

  8. mongodb的数据库操作

    1.创建数据库 语法 MongoDB 创建数据库的语法格式如下: use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库. 1.创建数据库 > show dbs ...

  9. Linux2.6.32内核笔记(5)在应用程序中移植使用内核链表【转】

    转自:http://blog.csdn.net/Deep_l_zh/article/details/48392935 版权声明:本文为博主原创文章,未经博主允许不得转载. 摘要:将内核链表移植到应用程 ...

  10. UVALIVE 3307 Adventurous Driving

    一开始重新建图搞的.然后参照了别人的博客.这个解法比较好 利用在SPFA维护入队次数.入队次数大于节点数目的位于负环. 那么负环中的点如何DFS到终点.(SPFA从起点开始如果能找到入队大于N那么一定 ...