变量和运算符
1.什么是shell变量
2.本地变量
variable_name=value
set查看本地变量
readonly variable_name 变量值不能被改变
readonly查看只读的变量
3.环境变量
环境变量是适用于所有用户进程(通常称为子进程)。登录进程称为父进程。shell中执行的用户进程均称为子进程。不像本地变量只用于现在的shell,环境变量可用户所有子进程,这包括,编辑器,脚本,应用。
位置:$HOME/.bash_profile()(/etc/profile(所用用户))
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。
变量的显示,如:test="this is test" echo ${test}
4.变量替换(显示变量)
${variable name} | 显示实际值到variable name | ${variable name:+value} | 如果设置了variable name则显示其值,否则,为空 | ${variable name:?value} | 如果未设置variable name,则显示用户定义的错误信息value | ${variable name:-value} | 如果未设置variable name,则显示value | ${variable name:=value} | 如果未设置variable name,则设置其值并显示。 |
变量的清除:
unset variable_name
readonly 变量不能重置值,也不能取消或清除
export:设置环境变量
env:显示当前用户的环境变量;
set:显示和设置变量
5.位置变量
定义:位置变量表示$0,$1,$2,....$9
$0 $1 $2 $3 $4
脚本名 A B C D
向脚本中使用位置参数;
向系统命令传递参数;
例:./test<在程序中进行替换>
[root@localhost ~]#vi /test #创建并编辑/test文件 #!/bin/bash #test echo "这是脚本的第一个名称: $0" echo "这是脚本的第二个位置参数: $1" echo "这是脚本的第三个位置参数: $2" echo "这是脚本的第四个位置参数: $3" echo "这是脚本的第五个位置参数: $4" [root@localhost ~]#chmod u+x ./test #加执行权限; [root@localhost ~]#./test A B C #加参数证验 echo "这是脚本的第一个名称: ./test echo "这是脚本的第二个位置参数: A echo "这是脚本的第三个位置参数: B echo "这是脚本的第四个位置参数: C echo "这是脚本的第五个位置参数:
<向系统命令中传递位置参数>
[root@localhost ~]#vi test1.sh #新建一个脚本文件 #!/bin/bash find /opt/ -name $1 -print $2 #系统命令 [root@localhost ~]#chmod u+c test1.sh [root@localhost ~]#./test1.sh /opt/mysofts
6.标准变量
bash默认建立一些环境变量就是标准变量,可以通俗的说就是不是你加的而是装好机子带的那些环境变量, 可在/etc/profile中进行定义,命令 意义
HOME 用户主目录
IFS 默认分隔符
MAIL 邮箱地址
MAILCHECK 邮箱检查间隔(秒)
PWD 用户当前工作目录
LOGNAME 当前用户登录名
7.特殊变量
命令 意义
$# 传递到脚本的参数列表
$? 前个命令执行情况,0成功,其它值失败
$$ 脚本运行的当前进程号
$! 运行脚本最后一个命令
$* 显示脚本全部参数
8.影响变量的命令
declare 设置或显示变量
-f 只显示函数名
-r 创建只读变量
-x 创建转出变量
-i 创建整数变量
使用"+"代替"-",可以颠倒选项的意思,-r除外,
export 用于传递给子shell的变量
-- 表明选项结束,所有后续参数都是实参,
-f 表明在"名-值"对中的名字是函数名,
-n 把全局变量转换成局部变量,换句话就是不再传给shell
-p 显示全局变量列表,
shift:用于移动位置变量,调整位置变量,使$3的值赋给$2.$2的值赋予$1.
运算符
顾名思义就是告诉计算机哪些数值应该用哪种运算符进行运算,+,-,*,\,通过表达式对变量,数字,字符用的运算的符号就叫运算符;
通常表达式:是运算符和数字,变量,字符对象的集合体;
1 运算符类型;
按位运算符;在其它语言中经常见到哦,
~,<<,>>,|,^
$[]表示形式告诉shell求中括号中的表达式的值;
$[ 2+8 ]
运算符 说明
~var 反运算符,把var中所有的二进制为1的变为0,为0的变为1
var< 出的各位,最右端的各位上补上0值,每做一次按位左移就有实
var乘2;
var>>str 右移运算符,把var中所有的二进制位向右移动str位,忽略最右
移出的各位,最左的各位上补0,每次做一次右移就有实现var除以2,
var&str 与比较运算符,var和str对应位,对于每个二进制来 说,如果二都为1,结果为1.否则为0;
var^str 异域运算符,比较var和str对应位,对于二进制来说,如果二者互补,结果为1,否则为0;
var | str 或运算符,比较var和str的对应位,对于每个二进制来说,如二都该位有一个1或都是1,结果为1,否则为0;
逻辑运算符
&& 1 1才为1
|| 有一个1即为1
赋值运算符.+=,==,^=.|=
let count =$count +=$change
2.表达式替换
也就是刚才用的$[]等同于$(())
运算符的优先级
级别 运算符 说明
1 =,+=,-=,/=,
%=,*=,&=,^=, 赋值运算符
|=,<<=,>>==
2 || 逻辑或
3 && 逻辑与
4 | 按位或
5 ^ 按异位与
6 & 按位与
7 ==,!= 等于/不等于
8 <=,>=,<,> 大于或等于/小于或等于/大于/小于
9 <<,>> 按位左移/按位右移
10 +,- 加减
11 *,/,% 乘,除,取模
12 ! ,~ 逻辑非,按位取反或补码
13 -,+ 正负
发表评论
-
Linux几种压缩工具或库的简单测试
2016-01-16 15:22 774网址: http://jeoygin.org/2011/ ... -
linux共享文件夹
2016-01-06 10:52 411linux共享文件夹: http://www.cnblo ... -
centOS yum 安装mysql
2014-08-21 21:46 431安装MySQL 安装MySQL [root@localhost ... -
awk入门
2014-08-11 10:01 0简介 awk是一个强大的文本分析工具,相对于g ... -
linux,shell学习(七)
2014-06-15 11:49 513脚本参数传递 1.shi ... -
linux,shell学习(六)
2014-06-15 11:15 419shell函数 1.定义函数 4.函数文 ... -
linux,shell学习(五)
2014-06-12 22:15 991文本过滤 1.正则表达式介绍 4.awk介绍 2.find介 ... -
linux,shell学习(四)
2014-05-27 22:10 506控制流结构 1.控制结构 6.while循环 2.i ... -
linux,shell学习(三)
2014-05-25 22:53 884shell的输入与输出 1.echo7 ... -
linux,shell学习(一)
2014-05-24 17:26 4691.1 什么是shell shell是核心程序(kernel) ... -
linux 下使用gzip压缩与解压文件
2014-05-20 22:02 638linux 下使用gzip压缩与解压文件 gzip 和 g ... -
shell语句执行hive查询
2014-05-09 15:41 1422执行hive查询实例 执行select查询 $HIV ... -
Shell编程基础
2014-05-09 15:37 478我们可以使用任意一种文字编辑器,比如gedit、kedit、e ... -
shell脚本定时器
2014-05-04 17:24 2281cron是一个linux下的定时执行工具,可以在无需人工干预的 ... -
shell脚本详解命令
2014-04-26 23:34 537shell脚本编写技巧 " 1.test测试命令 test命令 ... -
linux 下 ifcfg-eth0 配置
2014-04-23 16:42 574网络接口配置文件 [root@localhost ~]# ca ... -
Linux vi替换字符串
2014-04-21 11:48 4611. 基本的替换 :s/vivian/sky/ 替换当前行 ...
相关推荐
在本学习资料包中,包含了三本关于Linux Shell的重要书籍:《Linux Shell编程艺术》、《Linux Shell脚本攻略》以及《Linux Shell从入门到精通》,这些资源将帮助你全面深入地理解和掌握Linux Shell。 《Linux Shell...
资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...
shell学习基本命令,可以帮助初学者快速掌握较全面的shell脚本知识
Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...
"Linux Shell实例精解"这本书籍正是针对这个主题,为初学者提供了丰富的学习资源。 在Linux世界中,Shell扮演着至关重要的角色。它不仅用于执行单个命令,还能通过脚本进行批量处理、文件操作、系统管理、数据处理...
### Linux Shell脚本全面学习知识点概述 #### 一、Linux脚本编写基础 **1.1 语法基本介绍** **1.1.1 开头** - **解释**: 每个Shell脚本都需要以 `#!/bin/sh` 开始,这行被称为shebang,用于指示系统如何执行此...
在这个"Linux Shell视频教学"中,你将深入学习如何有效地利用Shell进行日常的系统管理、文件操作以及自动化工作流程。 首先,你需要了解Shell的基础知识,包括如何启动和退出Shell,以及基本的命令行操作,如目录...
Linux shell是学习Linux必须掌握的脚本之一,该文档为本人学习Shell脚本时总结的一些基础知识,包括Shell的语法、简单示例和总结,欢迎下载学习。
Linux Shell编程入门实例讲解详解 Linux Shell编程是Linux系统中一...Linux Shell编程是Linux系统中一种非常重要的工具,通过学习Linux Shell编程,可以提高工作效率,提高系统管理的自动化程度,提高自己的编程能力。
linux shell 应用.chm,学习linux shell资料
通过学习和实践这些基础知识,你可以编写出自己的Linux Shell脚本来解决实际问题。结合提供的博客地址(http://blog.csdn.net/u013171283/article/details/79204476),可以更深入地学习和理解Linux Shell编程的高级...
linux shell 编程电子书,学习linux shell很不错的资料,高清的
本文将深入探讨Linux shell命令的学习心得,分享一些实用技巧和常见命令的用法。 首先,Linux shell是操作系统与用户交互的接口,它允许用户通过输入命令来执行各种任务。在众多shell类型中,Bash(Bourne-Again ...
《Linux shell 脚本攻略-第二版》是一本深受赞誉的书籍,旨在帮助读者深入理解并掌握Shell脚本编程。这本书的源代码合集提供了丰富的实例,供读者实践和学习。 Shell脚本的基础在于Bash(Bourne-Again SHell),它...
分别有以下这些内容的资料 Linux与unix shell编程指南 Bash参考手册 Expect中文教程 Expect简介和应用 Expect命令基本语法 高级Bash脚本编程指南 高级Shell脚本编程 Shell命令合集
【Linux Shell程序设计 Ubuntu 实验二】实验主要涵盖了Linux操作系统中的Shell编程基础,适用于Ubuntu环境。实验目的是让学生掌握Bash Shell的创建与执行方法,理解基本语法,并学会编写Shell脚本。实验报告要求遵循...