自学Linux Shell11.3-使用变量
11.3-使用变量
Shell脚本的执行通常可以采用以下几种方式:
1):bash script-name或sh script-name(推荐使用)
2):path/script-name 或./script-name(当前路径下执行脚本)
3):source script-name或 . script-name #→注意”.”点号。
4):sh<script-name或cat scripts-name|sh(同样适合bash)
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
your_name="runoob.com"
变量名的命名须遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
- 中间不能有空格,可以使用下划线(_)
- 不能使用标点符号
- 不能使用bash里的关键字(可用help命令查看保留关键字)
- 变量名和等号之间不能有空格
- 如果一行只有一条命令,则每一行不用以分号结尾,每一条命令以换行分隔
如果一行有多条命令,则每一条命令以分号分隔,但建议每行只有一条命令
1.普通变量:
1.1 环境变量:变量必须是大写
- 配置永久性的环境变量,全局变量的配置文件:/etc/profile 、/etc/bashrc 基本上使用 /etc/profile
- 配置用户的环境变量的配置文件,分别是:用户的主目录下的隐藏文件:~/.bash_profile 、 ~/.bash_bashrc
- 临时设置 # export ZSY=1
- 设置所有用户生效的目录 :/etc/profile.d/ :目录下必须是脚本否则无法使用
- 如果写一个JAVA的脚本,要把JAVA环境变量放入脚本内,特别是定时任务执行的时候
- 显示环境变量:
# env //* 显示的环境变量
# set //* 显示的环境变量更多
- 取消环境变量
# unset <环境变量名> //* 临时取消变量
进入文件删除变量
1.2 环境变量的意义:
- UID :当前用户的UID
- USER :当前登录的用户
- HOME :当前的用户主目录
- _= :上一条命令的最后一个参数
- BASH :调用实例时使用的全路径
- PS1 :当前的终端
- PATH :命令所在路径
1.3 局部变量:
- 一般连续的字符串,数字,路径等可以不加任何引号,不过无引号的情况最好用双引号替代之。
- 如果变量中使用其他变量时,则不可以使用单引号否则无法使用:如下:
- 如果变量中有空格的话,就必须使用双引号否则无法输出:如下:
1.4 引号的意义
- 无引号:把内容输出出来,会将未含有空格的字符串视为一个整体输出; 如果有命令(要在反引号中的)、变量、特殊转义符解析出结果然后子在输出最终内容来,如果字符串中有空格等特殊字符则则不能完整输出,需要加双引号,一般连续的字符串,数字,路径等可以不加任何引号, 不过无引号的情况最好用双引号替代之。
- 单引号:可以说是所见即所得:即将单引号内的所有内容都原样输出,或者描述为里面看到的是什么就会输出什么
- 双引号:把双引号内的所有内容都输出出来;如果有命令(要在反引号中的)、变量、特殊转义符解析出结果然后子在输出最终内容来
- 反引号:一般用于执行命令,执行的时候命令会执行,同理可以使用 a=$(ls):结果相同 (注意反引号是键盘~下面的`)
1.5 变量定义小结:
普通变量:
a=1 连续的数字字符串
a="/etc/rc.local $USER" 解析结果后输出
a='$USER' 原样输出
命令内容定义:
a=`ls` 反引号 //* 将反引号中字符当做命令输出
a=$(ls)
2. 特殊变量:
2.1 位置变量
- $n 获取当前执行的shell脚本的第n个参数值(参数值默认以空格区分,如果参数加了双引号,则将双引号的整个作为一个参数, 不管其中是否有空格),n=1..9 ,当 n 为0时表示脚本的文件名,如果n大于9,用大括号括起来${10},参数以空格隔开。
- $0 获取当前脚本本身的名字
- $1 获取当前传递给该shell脚本的第一个参数
- $2 获取当前传递给该shell脚本的第二个参数
- $# 获取当前传给脚本的参数个数
- $$ 获取当前脚本运行的当前进程 PID 号
- $@ 获取当前传给脚本的所有参数的列表
- $* 获取当前以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
- $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
例1:
例2:
例3:
自学Linux Shell11.3-使用变量的更多相关文章
- 自学Linux Shell6.1-环境变量概念
点击返回 自学Linux命令行与Shell脚本之路 6.1-环境变量概念 环境变量 在Linux中,很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息: bash shell使用环境变 ...
- 自学Linux Shell11.1-shell概述
点击返回 自学Linux命令行与Shell脚本之路 11.1-shell概述 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计 ...
- 自学Linux Shell11.2-echo命令
点击返回 自学Linux命令行与Shell脚本之路 11.2-echo命令 echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用. 语 法:echo [-n][字符串]或 echo [- ...
- 自学Linux Shell11.5-执行数字运算
点击返回 自学Linux命令行与Shell脚本之路 11.5-执行数字运算 1. Shell基本运算符 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符 ...
- 自学Linux Shell11.6-退出shell
点击返回 自学Linux命令行与Shell脚本之路 11.6-退出shell shell运行的每一个命令都是使用 退出状态码 告诉shell它已经运行完毕.退出状态码是一个0~255的整数值,在命令结 ...
- 自学Linux Shell11.4-重定向输入输出
点击返回 自学Linux命令行与Shell脚本之路 11.4-重定向输入输出 Linux 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输 ...
- 自学Linux命令行与Shell脚本之路
自学Linux命令行与Shell脚本之路[第一回]:初识Linux 1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3 ...
- 自学Linux Shell6.2-用户自定义环境变量
点击返回 自学Linux命令行与Shell脚本之路 6.2-用户自定义环境变量 1.设置局部用户定义变量 一旦启动bash shell(或者执行一个shell脚本),你就能创建这个shell进程可见的 ...
- 自学Linux Shell6.3-系统环境变量持久化
点击返回 自学Linux命令行与Shell脚本之路 6.3-系统环境变量持久化 在你登录Linux系统启动一个bash shell时,默认情况下bash在几个文件中查找命令,这几个文件成为启动文件:b ...
随机推荐
- CF1110E Magic Stones 差分
传送门 将原数组差分一下,设\(d_i = c_{i+1} - c_i\) 考虑在\(i\)位置的一次操作会如何影响差分数组 \(d_{i+1}' = c_{i+1} - (c_{i+1} + c_{ ...
- DataWorks使用小结(一)——概述
一.概述 DataWorks数据工场,是MaxComputer的可视化开发平台,一站式开发.管理界面 1.功能概述 1.强大调度:支持分钟到月的调度 2.多种任务:支持ODPS.SHELL等多种任务 ...
- Ionic App 启动时报Application Error - The connection to the server was unsuccessful
最近在更新App的时候,发现在华为手机上报这个错误,有点困惑,查找资料分析,大概原因是程序在加载index.html网页时,加载的资源过多,造成时间超时, 这个时原因分析https://stackov ...
- Flutter - 自动生成Android & iOS图标
对于要发布的app来说,做图标是一个麻烦的事,你需要知道N个图标的分辨率,然后用PhotoShop一个个修改导出. PS好图标之后,按照各自的位置放进去. ********************** ...
- 运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)
对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮 ...
- 【2016.3.22】作业 Word count 小程序
今天更下word count程序的设计思路及实现方法. 我的程序贴在coding里,这里就先不贴出来了, 我的coding地址:https://coding.net/u/holy_angel/p/wo ...
- Scrum Meeting NO.8
Scrum Meeting No.8 1.会议内容 2.任务清单 徐越 序号 近期的任务 进行中 已完成 1 代码重构:前端通讯模块改为HttpClient+Json √ 2 添加对cookies的支 ...
- 《Linux内核分析》第六周笔记 进程的描述和进程的创建
进程的描述和进程的创建 一.进程的描述 1.进程描述符task_struct数据结构(一) 操作系统的三大功能:进程管理(核心).内存管理.文件系统. 进程控制块PCB——task_struct(进程 ...
- 战神答题APP 无敌结束版
APP发布了哦~~ 多多捧场~ http://anzhuoyuan.com/app/info/appid/242381.html 还有github https://github.com/784 ...
- 文本文件合并(C++实现)
直接附上代码吧 #include<iostream> #include<fstream> #include<cstdlib> using namespace std ...