2、SHELL编程基础(三)

简介: 前面的文章见163blog. 内部变量和环境变量类似,也是在SHELL  执行前已经定义的变量。可以在SHELL  程序中使用,而不能修改。 shell元字符 >             prog >file 将标准输出重定向到文件>>         prog >> file将标准输出附...

前面的文章见163blog.

内部变量和环境变量类似,也是在SHELL  执行前已经定义的变量。可以在SHELL  程序中使用,而不能修改。

shell元字符

>             prog >file 将标准输出重定向到文件
>>         prog >> file
将标准输出附加到文件
<             prog <file
从文件file中获取标准输入
|            p1 | p2
p1的标准输出作为p2的标准输入
<<stringHere Document:
标准输入从HereDocument读入,直到出现string
*            
匹配文件名中的零个或多个字符
?           
匹配文件名中的任何单个字符
{abc}  
匹配文件名中abc范围内的任何字符,如0-9a-z都是合法的
;           
命令结束符,例如p1;p2表示先执行p1,再运行p2
&            
命令结束符,与; 类似,但不等p1结束
`...`     
运行...中的命令,输出的结果代替`...`
(...)        
在子shell中执行...中的命令
{...}     
在当前shell中执行...中的命令(很少使用)
$1
$2等    $0...$9代表shell文件的参数
$
变量   shell变量的值
${
变量}   变量的值,为避免在文本连接时混淆
\               \c
c 字符作为字符,但\ 后面加换行符无效
'...'           
作为文本,不作任何替换
"..."            
... 中的$`...`\ 得到替换后,将... 作为文本
#              
表示注释
变量=值    为变量赋值
p1&&p2  
运行p1;若成功,再运行p2
p1||p2      
运行p1;若不成功,再运行p2

` 命令替换(反撇号)

 

Shell内部变量

$#   参数个数 ,从0开始计数
$*   shell
的所有参数
$@  
类似$*
$-     shell
用的选择项
$?    
上次执行的命令的返回值
$$     shell
的进程标识符
$!    
&启动的最后一个命令的进程标识符
$HOMEcd
命令的缺省参数
$IFS   
参数分隔词的字符表
$MAIL
信件文件,当其改变时给出信息youhave mail ... 没用过这个^_^
$PATH  
搜索命令的目录表
$PS1  
提示符串,缺省为$
$PS2  
后继命令行提示符串 ,缺省为>

 

变量表达式

bash中,命令test用来完成表达式的比较
test
表达式 或[表达式]
表达式所代表的操作符有字符串操作符、数字操作符、逻辑操作符以及文件操作符。其中文件操作符是一种shell独特的操作符,因为shell里的变量都是字符串,为了达到对文件进行操作的目的,于是才提供了这样的一种操作符。'
  1、字符串比较
  作用:测试字符串是否相等、长度是否为零,字符串是否为NULL(注:bash区分零长度字符串和空字符串)
常用的字符穿操作符有:
  =比较两个字符串是否相同,同则为“是”!=比较两个字符串是否相同,不同则为“是”
  -n比较字符串长度是否大于零,如果大于零则为“是”
  -z比较字符串的穿度是否等于零,如果等于则为“是”

!=

在输入时应注意要有适当的空格。

If[ $str1 = $str2 ]; then

echo“Hello”
 2、数字比较
  这里区别于其他编程语言,test语句不使用>?类似的符号来表达大小的比较,而是用整数式来表示这些。
  -eq相等
  -ge大于等于
  -le小于等于
  -ne不等于
  -gt大于
  -lt小于9
  3、逻辑操作!反:与一个逻辑值相反的逻辑值
  -a(and):两个逻辑值为“是”返回值才为“是”,反之为“否”
  -o(or):两个逻辑值有一个为“是”,返回值就为“是”
  4、文件操作"
  文件测试表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于test关于文件的操作符有很多,我们只列举一些常用的。
  -d对象存在且为目录返回值为“是”
  -f对象存在且为文件返回值为“是”
  -L对象存在且为符号连接返回值为“是”
  -r对象存在且可读则返回值为“是”
  -s对象存在且长度非零则返回值为“是”
  -w对象存在且可写则返回值为“是”
  -x对象存在且可执行则返回值为“是”
5
、逻辑操作

! 求非

-aand操作

-oor操作

 

SHELL字符

双引号

这样可以使shell将整个字符串解释为一个整体而不是多个

单引号

可以阻止shell进行变量替换和解释特殊字符。对于后一种情况,单引号就量个转义字符,类似于反斜线。

反斜线

用作转义字符,可以阻止shell将后续字符解释成特殊字符

反撇号

可以通知shell用其执行结果替代字符串

目录
相关文章
|
5月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
5月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
3月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
4月前
|
Shell
Shell编程(下)
Shell编程(下)
127 1
|
4月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
70 1
|
4月前
|
Shell Linux 开发工具
|
4月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
109 12
|
5月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
5月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
70 12
|
5月前
|
Shell Linux
Shell 编程 编写hello word
Shell 编写hello word
68 5