与Shell变量相关的几个命令:

变量只在当前Shell中生效.

source 这个命令让脚本影响他们父Shell的环境(. 可以代替source命令)

export 这个命令可以让脚本影响其子Shell的环境  ()

unset 从环境中删除变量

其他几个与变量有关的命令:

declare: 用于显示或设置变量

let: 用于求整数表达式的值

local: 用于创建不能传给子Shell的变量, 这个命令仅在过程内部有效

readonly: 用于显示或者设置只读变量

set: 用于设置或者重置各种Shell选项(不仅用于变量)

shift: 用于移动位置变量

typeset: 用于显示或者设置变量(同declare)

变量赋值

logfile="stdout.log"
echo "$logfil"

1、变量赋值——没有类型,根据赋值的类型决定变量类型,可以多次随意赋值。赋值号两边不能有空格

1)显示定义:VAR=value

变量声明时使用的引号不会被保留,当变量值中有空格时必须使用引号

2)读取:read VAR

    • 一次读入一行! 可以一次读入多个变量read。

      • read firstname lastname
        输入:steve Parker Smith    以空格分,最后一个变量两个
        输入:steve 给的少,后一个变量为空字符串,一直存在于shell中,可以在当前shell中用set | grep name=查看

    • 从文件读入
      • read password < /etc/passwd读入一行
        while read passwd
        doecho $passwd
        done < /etc/passwd一直循环读,直到不再输入

    • read -p “what file do you want to test?" filename 命令替换:
  • 命令赋值:VAR=`date`、 VAR=$(date)
  • 数值计算:c=`expr $a +4`、c=let $a + 4  、$(($a+$b))  但也有点区别:有的shell不支持,是否有对非数值进行的先验(expr没有)
  • 将变量值设置为某个给定命令的输出,其时是第一种赋值方式的变种

    • TODAY=`date +%A`动态赋值

引用变量

2、引用变量——的格式是${变量名}   $(variable)bar    echo $variable bar ${variable}bar

访问不存在的变量只会返回空字符串或0,具体取决与上下文,所以当将某个变量名写错时,不会报错,还能有结果;

变量名区分大小写

3、支持一维数组变量:

[lixn@localhost ~]$ Users=(zsan lisi wangwu zhangsan lisi)  定义一维数组
[lixn@localhost ~]$ echo $Users                  索引
zsan
[lixn@localhost ~]$ echo ${Users[0]}
zsan
[lixn@localhost ~]$ echo ${Users[2]}
wangwu
[lixn@localhost ~]$ echo ${Users}
zsan
[lixn@localhost ~]$ echo ${Users[*]}
zsan lisi wangwu zhangsan lisi
[lixn@localhost ~]$ echo ${#Users[*]}       返回数组长度
5
[lixn@localhost ~]$ echo ${#Users[2]}       返回元素值的长度
6
[lixn@localhost ~]$ Users[1]=wlm          修改值
[lixn@localhost ~]$ Account=(${Users[*]})     数组之间赋值
[lixn@localhost ~]$ echo ${Account[*]}
zsan wlm wangwu zhangsan lisi

特殊变量

${#var} 变量的长度

特殊变量由bash自动定义和赋值,用户不能修改。

$$:当前进程号

$?:前一个命令的退出状态,0表示执行成功,1标志执行失败

$0:存储命令本身——位置参数

$1-$n:依次代表命令行参数,当大于9时,用{}括起来,如${10}——位置参数

$#:命令行参数的个数,不包括命令本身

$*:保存了全部的命令行参数。不包含命令本身 $@

$!:后台程序的pid

其他

basename命令——去掉位置参数的路径信息,所以./scropt.sh、/usr/local/bin/script.sh等会被转化为script.sh

Myname is `basename $0`

shift命令——多用于“下一个参数”,shift内置命令每次调用时将所有参数进行一次移位,首先截去$1,然后截去$2....无法将移位逆向进行。

    shift也可以一次截去多个变量(shift 3  或者  shift shift shift)多用后者

#!/bin/bash
echo "My name is `basename $0` - I was called as $0"
echo "I was called with $# parameters."
count=1
while [ "$#" -ge "1" ]; doecho "Parameter number $count is: $1"let count=$count+1shift
done[lixn@Fedora24 bash_learn]$ ./shift.sh
My name is shift.sh - I was called as ./shift.sh
I was called with 0 parameters.
[lixn@Fedora24 bash_learn]$ ./shift.sh one two three
My name is shift.sh - I was called as ./shift.sh
I was called with 3 parameters.
Parameter number 1 is: one
Parameter number 2 is: two
Parameter number 3 is: three

$*和$@的使用与区别

删除变量——unset myvar;将变量赋值为空字符串也能实现变量的删除,但与unset不完全相同

转载于:https://www.cnblogs.com/daduryi/p/6627660.html

shell脚本1——变量 $、read、``相关推荐

  1. 69:shell脚本介绍 | shell脚本结构 | 执行data命令用法 | shell脚本中变量

    2019独角兽企业重金招聘Python工程师标准>>> 1.shell脚本介绍: shell是一种脚本语言和传统的开发语言相比,会比较简单: shell有自己语法,可以支持逻辑判断. ...

  2. Shell脚本编程----变量的使用

    接触Linux Shell脚本编程很久了,但是发现每次学完之后就会忘记,这似乎又印证了那句"好记性不如烂笔头"的言语,事实确实如此,坚持写博客,定期回顾,你会感觉很充实. 这是本系 ...

  3. python 执行shell_从python执行Shell脚本与变量

    我有这个代码: opts.info("Started domain %s (id=%d)" % (dom,domid)) 我想从上面执行一个带有参数domid的shell脚本. 这 ...

  4. 【Linux】shell脚本基础-变量

    文章目录 什么是变量? 变量分类: 1. 按照变量的作用分 2. 按照变量的作用域分: 环境变量 用户定义变量 变量的命名与规则: 1) 变量规则测试 2) 关于${} 的使用,拼接测试 3)**能不 ...

  5. Shell脚本的变量

    目录 1.Shell脚本变量简介 2.变量的作用 3.变量的类型 4.自定义变量 4.1自定义变量命名要求 4.2定义与查看变量 4.3赋值时使用的引号 4.4从键盘输入内容为变量赋值 4.5 变量的 ...

  6. Linux Shell脚本入门教程系列之(三)Shell变量

    本文是Linux Shell脚本系列教程的第(三)篇,更多shell教程请看:Linux Shell脚本系列教程 Shell作为一种高级的脚本类语言,也是支持自定义变量的.继上一篇之后,今天就为大家介 ...

  7. Shell脚本中的return,exit 0,以及 父进程获取子进程的变量

    1 Shell脚本中的return,exit 0 shell脚本中,一般在脚本的函数里面使用return语句,函数中使用return语句后,表示函数执行完毕,函数中return语句后面的代码将不再执行 ...

  8. shell脚本中的变量

    shell脚本中的变量 1 变量的定义 2 shell脚本中变量的定义方法 2.1 环境级别 2.2 用户级别 2.3 系统级别 3 变量名称 4 变量的转译 4.1 转译 4.2 声明 4.3 变量 ...

  9. 7月11日任务 shell介绍、shell结构和执行 、date命令用法、shell脚本中的变量

    2019独角兽企业重金招聘Python工程师标准>>> 20.1 Shell脚本介绍 • shell是一种脚本语言  aming_linux  blog.lishiming.net ...

  10. Shell脚本攻略02-玩转变量与环境变量

    概述 变量是任何一种编程语言都必不可少的组成部分,用于存放各类数据. 脚本语言通常不需要在使用变量之前声明其类型.只需要直接赋值就可以了. 在Bash中,每一个变量的值都是字符串. 无论你给变量赋值时 ...

最新文章

  1. 记一次mysql性能优化过程
  2. Vue 全家桶 + Electron 开发的一个跨三端的应用
  3. 研发应该懂的binlog知识(下)
  4. java中调用api的方式(postJsonHTTP)
  5. 【python 3.6】python读取json数据存入MySQL(一)
  6. [傅里叶变换及其应用学习笔记] 二十四. 级联,脉冲响应
  7. TCP的FIN、ACK、SYN、URG、PSH及攻击方式
  8. 回拨系统服务器,CISCO接入服务器回拨功能的实现
  9. java求圆弧切线_两个圆的公切线
  10. 微信小程序-滚动消息通知
  11. 判断是否为一棵树的子树 Subtree of Another Tree
  12. 美团笔试--修改矩阵
  13. 启动react项目报找不到文件的错误
  14. 俄罗斯最大的盗版资源网站,解封了!
  15. 凸包(Graham扫描法构建)
  16. 有个程序猿很忧桑:一个命令rm -rf/ ,他把整个公司删没了
  17. 数据外泄保护与国土安全部
  18. C++ 数据存储类型
  19. 环信即时通讯云iOS版V2.0.9.1服务评测
  20. 蓝桥杯-【交换瓶子】【2016年省赛B组题解】【C++】

热门文章

  1. Python学习笔记----try...except...else
  2. Jira 随便总结
  3. js 之for..in、表单及事件触发
  4. 一个网站的诞生- MagicDict开发总结2 [ACCESS的烦恼]
  5. html用a标签怎么提交表单?
  6. ad如何镜像器件_使用 Dockerfile 制作镜像
  7. 基类数组存放派生类_永远不要将派生类数组赋值给基类类型指针
  8. MATLAB的dir函数
  9. visio科学图形包_科学网—科研必备:几款好用的流程图工具,助力你的论文/科研绘图...
  10. python命令行参数作用_Python命令行参数解析模块argparse