shell基础及变量符号
- 当shell脚本具有可执行权限时,用bash filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所以”.”是用来表示当前目录的。
- source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
- bash filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,子shell新建的、改变的变量不会被带回父shell。子shell继承父shell的环境变量:
- 变量名由数字、字母、下划线组成;
- 必须以字母或者下划线开头,不能以数字开头
- 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。
|
[ expression ]
|
[ 1 -eq 1 ]
|
|
|
描述
|
实例
|
|
-eq, equal
|
等于
|
[ 1 -eq 1 ] 为true
|
|
-ne, not equal
|
不等于
|
[ 1 -ne 1 ] 为false
|
|
-gt, greate than
|
大于
|
[ 1 -gt 1 ] 为false
|
|
-lt, lesser than
|
小于
|
[ 1 -lt 1 ] 为false
|
|
-ge, greate or equal
|
大于或者等于
|
[ 1 -ge 1 ] 为false
|
|
-le, lesser or equal
|
小于或者等于
|
[ 1 -le 1 ] 为false
|
|
运算符
|
描述
|
实例
|
|
==
|
等于
|
[ "a" == "a" ] 为true
|
|
!=
|
不等于
|
[ "a" != "a" ] 为false
|
|
-n
|
字符串长度不等于 0 为真
|
VAR1=1;VAR2=""
[ -n "$VAR1" ]为 true
[ -n "$VAR2" ]为 false
|
|
-z
|
字符串长度等于 0 为真
|
VAR1=1;VAR2=""
[ -z "$VAR1" ]为false
[ -z "$VAR2" ]为 true
|
|
测试符
|
描述
|
实例
|
|
-e
|
文件或者目录存在为真
|
[ -e path ] path 存在为 true
|
|
-f
|
文件存在为真
|
[ -f file_path ] 文件存在为 true
|
|
-d
|
目录存在为真
|
[ -d dir_path ] 目录存在为 true
|
|
-r
|
有读权限为真
|
[ -r file_path ]file_path有读权限为真
|
|
-w
|
有写权限为真
|
[ -r file_path ]file_path有写权限为真
|
|
-x
|
有执行权限为真
|
[ -r file_path ]file_path有执行权限为真
|
|
运算符
|
描述
|
实例
|
|
!
|
非关系,条件结果取反
|
[ ! 1 -eq 2 ]为true
|
|
-a
|
和关系,在[]表达式中使用
|
[ 1 -eq 1 -a 2 -eq 2 ]为true
两者都为真才为真
|
|
-o
|
或关系,在[]表达式中使用
|
[ 1 -eq 1 -o 2 -eq 1 ]为true
两者有一真则为真
|
|
运算符
|
描述
|
|
+
|
加法
|
|
-
|
减法
|
|
*
|
乘法
|
|
/
|
除法
|
|
%
|
取余
|
|
运算表达式
|
实例
|
|
$(())
|
$((1+1))
|
|
$[]
|
$[]
|
|
命令
|
描述
|
实例
|
|
let
|
赋值并运算,支持++、--
|
let VAR=(1+2)*3 ; echo $VAR
x=10 ; y=5
let x++;echo $x 每执行一次 x 加 1
let y--;echo $y 每执行一次 y 减 1
let x+=2 每执行一次 x 加 2
let x-=2 每执行一次 x 减 2
|
|
expr
|
乘法*需要加反斜杠转义\*
|
expr 1 \* 2 运算符两边必须有空格
expr \( 1 + 2 \) \* 2 使用双括号时要转义
|
|
bc
|
计算器,支持浮点运算、平方等
|
bc 本身就是一个计算器,可直接输入命令,进入解释器
echo 1 + 2 |bc 将管道符前面标准输出作为 bc 的标准输入
echo "1.2+2" |bc
|
shell基础及变量符号的更多相关文章
- Shell基础-环境变量配置文件
Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...
- shell基础及变量
一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...
- centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课
centos shell基础知识 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 ...
- shell基础、变量、相关脚本
目录 一.shell基础 书写规范 引号 配置文件 read交互 脚本调式 小节总结 二.变量 变量类型 位置变量 状态变量 替换和删除 变量补充 变量运算 小节总结 三.相关脚本面试题 统计hist ...
- Linux Shell基础篇——变量
一.Shell中的变量 注:这里所说的Shell是Bash Shell,我姑且统称为Shell. Shell中的变量分为用户自定义变量.环境变量.位置参数变量.预定义变量.在Shell中,变量的默认类 ...
- Shell基础:变量类型 & 运算符
Shell变量 Shell支持三种类型的变量 用户自定义变量:用户自定义的变量,变量名以英文字母或下划线开头,区分大小写. 位置变量:根据位置传递参数给脚本的变量,默认支持9个位置变量 $1,$2,$ ...
- Linux Shell基础 位置参数变量、预定义变量
位置参数变量 在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数.其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数 ...
- Linux Shell基础 环境变量
环境变量 环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量.用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的 ...
- Shell基础之四 变量与运算
shell变量与运算 变量存在于内存中.假设变量str,设置或修改变量属性时,不带$号,只有引用变量的值时才使用$号.也就是说在内存中,标记变量的变量名称是str,而不是$str. 变量数据的存储方式 ...
随机推荐
- json java simple-json
http://code.google.com/p/json-simple/wiki/EncodingExamples#Example_1-1_-_Encode_a_JSON_object javac ...
- 在MFC对话框中快速集成三维控件
在MFC的对话框中可以方便的集成AnyCAD三维控件(c++版本),遵循一下几步: 1.在对话框资源中增加一个Static控件,ID为IDC_STATIC_3D,并且把它的Notify属性设置为Tru ...
- linux 解决 gvfsd-smb-browse CPU 100%占用
原文地址:https://bugzilla.redhat.com/show_bug.cgi?id=1303300 1: sudo vim /etc/samba/smb.conf 2:定位到[globa ...
- python之re模块和正则表达式
今天我们来谈谈python中模块的使用,在探讨模块前先来了解一下正则表达式的具体用法. 1.正则表达式 正则表达式就是匹配 字符串内容的一种规则.谈到正则就和字符串相关了,首先我们要知道什么是字符组. ...
- C#中 String和string的区别
string 是 System.String的别名,所以相当于声明了 using string = System.String 再者,string是C#的关键字,String是System下的类名.
- SpringBoot的特性
SpringBoot的理念“习惯优于配置” 习惯优于配置(项目中存在大量的配置,此外还内置了一个习惯性的配置,无须手动进行配置) 使用SpringBoot可以方便地创建独立运行.准生产级别的基于Spr ...
- Spring Boot相关组件的添加
在勾选相关组件后, pom.xml文件上发生了根本的变化 1.这是最简单的项目的pom文件 <?xml version="1.0" encoding="UTF-8& ...
- Java笔记--动态代理
Java动态代理 1.概念 代理: 有时我们并不想直接访问对象A,或者不能直接访问对象A.而是通过访问一个中间对象B,让中间对象B去访问A.这种方式就称为代理. 这里的对象A所属的类就为委托类,或者被 ...
- Oracle添加自增长字段方法步骤
第一步:创建自增长序列 CREATE SEQUENCE ZH_ALARM_INFO_SEQ--自动增长列 INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 ...
- python 之Requests库学习笔记
1. Requests库安装 Windows平台安装说明: 直接以管理员身份打开cmd运行界面,使用pip管理工具进行requests库的安装. 具体安装命令如下: >pip instal ...