变量与字符串
Bash shell没有所谓的“数据形态”,除非使用内置declare特别指定变量的型态。在Bash shell中,只有一种数据型态:以字符组成的字符串
不必经过事先声明的程序想用就用
设定变量值之后,该变量值只在当前的shell环境中有效。变量名长度无限制,区分大小写。
设定变量的方法:变量名称=值 但好的习惯是把字符串用双引号或单引号括起来。等号的两边不能有空白,右侧有空白时要用引号括起来。
为避免出错,可规定变量一律要先经过设定的程序才能使用。方法:shopt -s -o nounset
取得变量值:$变量名称或${变量名称},如变量的后面接有其他英、数单词或底线,须用{}隔开$和变量名称,如${myname}Mmm 否则,不必
echo printf 显示变量值
取消变量:
unset 变量名 先找变量再找函数
unset -v 变量名 取消变量
unset -f 函数名 取消函数
清空变量:变量名= 其值为null(空),但变量还存在
双引号括起变量可进行:替换变量;替换命令执行结果;替换算术运算结果
单引号的作用是形成一个所见即所得的字符串(写什么就显示什么),不会进行任何替换变量的操作
变量的执行范围,仅在各自的shell环境中有效
使变量成为环境变量,就能为子shell取用 export declare -x 变量=""
取消环境变量:testVar= 或 unset testVar
各种Bash内置变量
只读变量:readonly 变量名 readonly -f 函数名 readonly -a 数组名 declare -r 变量名 declare调整变量属性的方法
别名:alias 别名=指令 不能有空白,右侧有时单引号括起来,可递归定义
取消别名:unalias 别名
数组:下标从0开始,显示或获取某元素值:${数组名[索引值]}
也可以指定个别元素的索引,如:c={[3]=10,[1]=20,[10]=30}
取出数组所有元素:${B[@]} 以空白隔开的 或${B[*]} 一整个字符串
取得数组元素个数:${#数组[@]}或${#数组[*]}
若数组元素是字符串,${#数组[索引]}获得某元素长度
取消数组或数组元素:unset A unset A[i]
利用Here Document,打包C等的原始码。一个携带攻击程序的原型
# /bin/bash # echo "正在产生hello.c......" echo cat <<'EOF'>hello.c #include<stdio.h> int main() { printf("Hello world !\n") ; return 0; } EOF echo "正在编译hello.c......." echo #编译hello.c,产生执行文件 gcc -o hello hello.c #若编译成功,就执行 if [ $? -eq 0 ]; then echo "执行hello ......" echo ./hello else echo 'Compile ERROR : hello.c' fi
高级变量
变量扩展是一种简易的条件判断,对不同的条件赋予变量不同的替换值,即:变量扩展是对基本型加上条件判断,如若条件符合(如不存在或空值),则进行变量替换,若不符合,也有相应做法,它其实是一种隐含的"if-then-else"的程序语法
“变量存在”的定义:如果变量曾设值过,则称变量存在,反之不曾设值过,或曾用unset取消变量,则称变量不存在或未定义
测试变量“存在与否”:${待测变量-默认值}
测试变量“不存在”或其值为空:
“传回”一个默认值 ${待测变量:-默认值} 主要用途:在script中这个变量一定要有值才行,因此变量扩展的结果一定要传回一个非空值(使用默认值或变量值)
[-n #{DEBUG:-}] && set -v
给变量设一个默认值
提示错误信息:${待测变量:?提示信息} 显示变量名称和提示信息,并立即停止执行script
条件式的用途:确保某变量值一定要存在,否则若是继续执行,恐怕会发生严重后果
测试变量的“存在性":${待测变量:+真值} 用来测试某件事是真的
整理小结:
取字符串切片、长度:${变量:位置起点},${变量:位置起点:长度}
取部分位置参数 ${@:起点},${@:起点:个数}
计算长度:${#变量名}
对比样式:
由前面相比,删除最短的${变量#样式};删除最长的${变量##样式}
由后面相比,删除最短的${变量%样式};删除最长的${变量%%样式}
取代或删除部分字符串,只替换第一个对比符合的字符串${变量/样式/替换字符串},全部符合的${变量//样式/替换字符串};只删除第一个对比符合的字符串${变量/样式/},全部符合的${变量//样式/}
整理小结:
获取变量名称列表、数组索引列表:
${!数组变量[@]}或${!数组变量[*]}
${!开头字符串@]}或${!开头字符串*]}
命令替换:变量名=$(命令)或变量名=`命令`,提倡前者
算术扩展:$((算术式)),才会运算,不然就一字符串
发表评论
-
Linux Ubuntu 10.10安装Macbuntu 10.10主题
2012-03-31 18:28 1348Macbuntu 是一个用于 Ubuntu 的Mac主题包 ... -
文件传输命令PSCP的使用
2012-03-30 15:41 1840详解使用pscp命令Linux文件上传与下载 PSCP是一个 ... -
Linux 下Mysql备份与恢复
2012-03-29 16:30 863公司项目用到了Mysql的备份与恢复操作 现把脚本程序 ... -
Shell学习(12)文件操作
2011-06-04 21:04 1133文件操作 取得目录内容 ls getconf A ... -
Shell学习(11)文字和图形接口
2011-06-03 15:57 967文字和图形接口 dialog是一种在shell script ... -
Shell学习(10)进程管理和工作控制
2011-06-03 15:53 1340进程管理和工作控制 ps,top,htop命令的使用 ... -
Shell学习(9)sed和awk
2011-06-03 15:47 1012sed和awk 背景 设计script时,有时候需 ... -
Shell学习(8)转向
2011-06-03 15:42 884转向 文件代码:0,1 ... -
Shell学习(6)函数
2011-06-03 15:08 952函数 Bash调用函数不会 ... -
Shell学习(5)流程控制
2011-06-03 14:54 779流程控制 Bash Shell ... -
Shell学习(4)算术运算
2011-06-03 11:10 1107算术运算 在求值 ... -
Shell学习(7)建立函数库
2011-06-01 21:01 1220建立库函数 以获取Ip地址为例1.在一个文件夹下创建库文件m ... -
Linux Shell语法速查表(用C语言语法来作对比)【转】
2011-06-01 13:13 6编写Shell脚本的机会实在是比较少(通常在项目初期搭建开发 ... -
Shell学习(2)Bash Shell中命令行选项/参数处理
2011-05-30 16:48 16000.引言 写程序的时候经常要处理命令行参数,本文描述在 ... -
Shell学习(1)一个简单的Shell
2011-05-23 22:32 1011示例代码: #! /bin/bash # This is ... -
Linux基本命令
2011-05-23 20:55 853查看当前SHELL:echo $SHELL查看所有SHELL: ...
相关推荐
3. 变量的临时和永久生效: 对于环境变量,Shell提供了临时和永久生效的方式。临时生效可以通过export命令来实现,例如:“export NAME=ning”。永久生效则需要将export命令和变量赋值语句放入环境变量配置文件中,...
理解如何在脚本中执行程序以及如何导出Shell变量,可以更好地控制Shell脚本的行为,以及子Shell与父Shell之间变量的隔离与共享。这些知识不仅有助于编写更有效的Shell脚本,还能帮助在管理Linux系统时做出更明智的...
3. **变量赋值**: 赋值给变量时,可以使用等号`=`。注意,等号两边不能有空格。例如,`AGE=25`。对于字符串,如果值包含空格,需要使用引号包围,如`QUOTE="He said, \"Hello!\""`。 4. **引用变量**: 引用变量...
Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_shell脚本编程...
linuxShell与环境变量PPT教案学习.pptx
学习 Shell 编程可以让开发者更好地管理集群、提高开发效率。 Shell 解析器 Linux 提供的 Shell 解析器有 bash、sh、dash、tcsh、csh 等。Centos 的默认解析器是 bash。bash 和 sh 之间存在关系,sh 是 bash 的...
Shell学习第一章主要涵盖了Shell脚本语言的基础知识,包括Shell的介绍、基本语法、变量和字符串操作等内容。以下是对这些知识点的详细阐述: 1. **Shell介绍**:Shell是一种命令行解释器,它允许用户与操作系统进行...
【Shell变量学习】 在Shell编程中,变量是存储数据的基本单元,它们可以帮助我们保存和处理各种信息。本文主要探讨了Shell变量的使用、赋值、显示、删除以及一些特殊的操作。 1. **本地变量** 本地变量仅在当前...
3. Shell变量 - 变量命名遵循特定规则,首字母须为字母,不能有空格、标点符号,也不能使用bash关键字。 - 赋值时不需$符号,例如`your_variable="your,name"`。 - 使用变量时需在变量前加上$,如`echo $your_...
在本学习资料包中,包含了三本关于Linux Shell的重要书籍:《Linux Shell编程艺术》、《Linux Shell脚本攻略》以及《Linux Shell从入门到精通》,这些资源将帮助你全面深入地理解和掌握Linux Shell。 《Linux Shell...
**实用的Shell学习资料概述** Shell是Linux和Unix操作系统中的一种命令解释器,它作为用户与操作系统之间交互的界面,允许用户输入命令并执行。在众多的Shell中,Bash(Bourne Again SHell)是最流行的一个,广泛...
3. **数组变量**:用于存储多个值,每个值称为数组元素,如`MY_ARRAY=(元素1 元素2 ...)`。 4. **环境变量**:全局变量,对所有子进程可见,如`PATH`、`HOME`等。 5. **位置参数变量**:在脚本运行时自动创建,用于...
以上内容总结了Shell基础学习资料中的关键知识点,包括Shell脚本的基础结构、注释、变量管理、环境变量的概念以及一系列常用的Unix命令和相关概念。这对于初学者来说是非常宝贵的资源,有助于快速掌握Shell脚本的...
在Shell学习中,首先需要了解的是一些基础概念。例如,当用户登录到Linux系统时,系统会根据/etc/passwd文件中的信息来决定使用哪个Shell。用户可以在命令提示符下输入命令,由Shell进行解释和执行。例如,输入命令...
深入探讨Shell变量操作:变量替换扩展与字符串处理 在Linux Shell编程中,变量操作是构建高效、灵活脚本的关键技能之一。本文将深入探讨Shell变量的高级操作技巧,特别是变量替换扩展和字符串处理,旨在帮助读者...
- **示例3:查看当前Shell中的所有变量** - 使用`set`命令查看当前Shell环境中的所有变量: ```sh set ``` - **示例4:输出多个变量的值** - 可以同时输出多个变量的值: ```sh echo $var_1 $var_2 ``` - ...
Linux运维学习中,Shell脚本的编写是基础技能之一。在Shell编程中,变量的数值运算是一项非常重要的功能。本文将详细介绍Shell变量的数值运算方法以及相关知识点。 首先,Shell变量进行数值运算时,常见的命令有:...
**Shell脚本学习指南** Shell脚本是Linux和Unix系统中的强大工具,它允许用户通过编写脚本来自动化一系列命令操作,极大地提高了系统管理和任务执行的效率。本文将深入探讨shell脚本的基础知识,包括语法、变量、...
shell学习(经过自己整理) shell编程简介: Shell编程是指使用shell脚本语言编写的程序,以实现自动化任务、批量处理、系统管理等功能。Shell编程语言是基于文本的命令行接口,用户可以通过编写脚本来实现特定的...