Linuxshell特殊符号学习汇总

合集下载

linux中特殊符号大全

linux中特殊符号大全

在linux中你会用这些特殊符号吗?在shell中常用的特殊符号罗列如下:# ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == !=# 井号 (comments)这几乎是个满场都有的符号,除了先前已经提过的"第一行"#!/bin/bash井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。

# This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。

这常用在撰写过程中。

#echo "a = $a" # a = 0如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。

~ 帐户的 home 目录算是个常见的符号,代表使用者的 home 目录:cd ~;也可以直接在符号后加上某帐户的名称:cd ~user 或者当成是路径的一部份:~/bin~+ 当前的工作目录,这个符号代表当前的工作目录,她和内建指令 pwd的作用是相同的。

# echo ~+/var/log~- 上次的工作目录,这个符号代表上次的工作目录。

# echo ~-/etc/httpd/logs; 分号 (Command separator)在 shell 中,担任"连续指令"功能的符号就是"分号"。

譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/.;; 连续分号 (Terminator)专用在 case 的选项,担任 Terminator 的角色。

Linux之BASH和SHELL学习总结

Linux之BASH和SHELL学习总结

Bourne Again SHell (简称 bash)功能:1、命令编修能力 .bash_history文件2、命令与档案补全能力 Tab键[Tab] 接在一串指令的第一个字的后面,则为命令补全;[Tab] 接在一串指令的第二个字以后时,则为『档案补齐』!3、命令别名设定,指令: alias ---alias lm='ls -al',在.bash_profile文件里4、工作控制、前景背景控制: (job control, foreground, background)-----------------------???????????不懂5、程序化脚本: (shell scripts)6、通配符(Wildcard)bash内建命令 type type [-tpa] name,产看命令是否是bash内建命令,还是外部命令。

命令多行输入反斜杠'\' 然后紧接回车。

变量取用 echo $variable变量设定规则1、等号连接,等号两边没有空格;2、变量名只能是字母和数字,变量名开头不能为数字;3、发量内容若有空格符可使用双引号『"』或单引号『'』将发量内容结合起来,但双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示:『var="lang is $LANG"』则『echo $var』可得『lang is en_US』单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』;4.可用跳脱字符『 \ 』将特殊符号(如 [Enter], $, \, 空格符, '等)变成一般字符;5、在一串指令中,还需要藉由其他的指令提供的信息,可以使用反单引号『`指令`』或『$(指令)』。

特别注意,那个 ` 是键盘上方的数字键 1 左边那个按键,而不是单引号!例如想要取得核心版本的设定:『version=$(uname -r)』再『echo $version』可得『2.6.18-128.el5』;6、若该变量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容,如下所示:『PATH="$PATH":/home/bin』7、若该变量需要在其他子程序执行,则需要以 export 来使变量变成环境变量:『export PATH』8、通常大写字符为系统默认变量,自行讴定变量可以使用小写字符,方便判断 (纯粹依照使用者兴趣与嗜好) ;9、取消变量的方法为使用 unset :『unset 变量名称』例如取消 myname 的设定:『unset myname』获取版本信息 uname -r查看环境变量 env查看当前shell环境下所有环境变量,set 查看所有变量(包括环境变量和自定义变量),两者区别为该变量是否可以被子程序所继续引用。

linux shell 运算符

linux shell 运算符

linux shell 运算符Linuxshell运算符是在shell命令行界面下进行数学运算的工具。

它可以用来进行简单的数学计算,比如加减乘除、比较大小和逻辑运算等,为用户提供了方便和快捷的计算方式。

本文将会介绍几个常用的 Linux shell 运算符。

1. 基本运算符Linux shell 运算符中最基本的运算符是加减乘除等数学运算符。

在命令行界面下输入数学表达式,例如 3+2 或 5*6,使用 echo 命令输出结果即可。

例如:$ echo $((3+2))5$ echo $((5*6))30其中,双括号内的表达式会被 shell 解释器解析并计算出结果,然后 echo 命令会输出计算结果。

2. 比较运算符另一种常见的 Linux shell 运算符是比较运算符。

比较运算符可以用来比较两个数的大小关系,判断它们是否相等等。

常见的比较运算符有:- -eq:等于- -ne:不等于- -gt:大于- -lt:小于- -ge:大于等于- -le:小于等于这些运算符也可以用在 if 语句中,判断某个条件是否成立。

例如:if [ $a -eq $b ]thenecho 'a 等于 b'fi3. 逻辑运算符逻辑运算符在 Linux shell 中也很重要。

它们可以用来组合多个条件,判断复杂的逻辑关系。

常见的逻辑运算符有:- !:逻辑非- -o:逻辑或- -a:逻辑与例如:if [ ! $a -eq $b -o $a -lt $b ]thenecho 'a 不等于 b 或者 a 小于 b'fi上述代码中,逻辑或运算符 -o 表示只要其中一个条件成立就可以执行后面的代码。

总结一下,Linux shell 运算符是一个非常有用的工具,可以方便地进行数学计算和逻辑判断。

在日常使用中,可以结合 if 语句、for 循环等语句,编写出更加复杂的脚本,提高工作效率。

Shell特殊符号及条件判断

Shell特殊符号及条件判断

Shell特殊符号及条件判断一些特殊的符号$# 传递到脚本的参数个数$* 以一个单字符串显示所有向脚本传递的参数。

与位置变量不同,此选项参数可超过9个$$ 脚本运行的当前进程ID号$! 后台运行的最后一个进程的进程ID号$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数$- 显示shell使用的当前选项,与set命令功能相同$? 显示最后命令的退出状态。

0表示没有错误,其他任何值表明有错误。

$0 脚本名称$1..$9 第N个参数$(uname -r)=`uname -r`echo $((1+2))显示3,$((算术运算))一些判断总结-b file 若文件存在且是一个块特殊文件,则为真-c file 若文件存在且是一个字符特殊文件,则为真-d file 若文件存在且是一个目录,则为真-e file 若文件存在,则为真-f file 若文件存在且是一个规则文件,则为真-g file 若文件存在且设置了SGID位的值,则为真-h file 若文件存在且为一个符合链接,则为真-k file 若文件存在且设置了"sticky"位的值-p file 若文件存在且为一已命名管道,则为真-r file 若文件存在且可读,则为真-s file 若文件存在且其大小大于零,则为真-u file 若文件存在且设置了SUID位,则为真-w file 若文件存在且可写,则为真-x file 若文件存在且可执行,则为真-o file 若文件存在且被有效用户ID所拥有,则为真-z string 若string长度为0,则为真-n string 若string长度不为0,则为真string1 = string2 若两个字符串相等,则为真string1 != string2 若两个字符串不相等,则为真int1 -eq int2 若int1等于int2,则为真int1 -ne int2 若int1不等于int2,则为真int1 -lt int2 若int1小于int2,则为真int1 -le int2 若int1小于等于int2,则为真int1 -gt int2 若int1大于int2,则为真int1 -ge int2 若int1大于等于int2,则为真!expr 若expr为假则复合表达式为真。

linux命令符号

linux命令符号

在Linux系统中,命令符号是一些特殊字符,它们用于在命令行中执行各种操作。

以下是一些常见的Linux命令符号及其用法:
1. 重定向符号:
•>:将命令的输出重定向到文件,并覆盖文件内容。

•>>:将命令的输出重定向到文件,追加到文件末尾。

•<:从文件中读取输入,将文件内容提供给命令。

2. 管道符号:
•|:将一个命令的输出传递给另一个命令的输入。

3. 后台运行符号:
•&:将命令放在后台运行,允许继续输入其他命令。

4. 通配符:
•*:匹配任意数量的字符。

•?:匹配任意一个字符。

•[]:匹配括号内的任意一个字符。

5. 转义符号:
•\:用于转义特殊字符,使其失去特殊含义。

6. 分号符号:
•;:用于分隔多个命令,按顺序执行。

7. 反引号符号:
•`:用于执行命令,并将命令的输出作为参数传递给其他命令。

8. 双引号和单引号:
•":用于定义字符串,支持变量替换。

•':用于定义字符串,不支持变量替换。

这些是Linux命令行中常用的一些符号。

它们允许用户在命令行中执行各种操作,从文件重定向到后台运行命令,再到通配符和转义,都是Linux命令行操作的基本要素。

Linux下命令行通配符和特殊符号

Linux下命令行通配符和特殊符号

Linux下命令⾏通配符和特殊符号linux初学者经常会对命令⾏的通配符和正则表达式的特殊符号混淆.
通配符
*,代表0到⽆穷多个任意字符,
实例:
ls /*
,代表⼀定有⼀个任意字符
实例:
ls /
根⽬录下正好三个字符的⽂件名
[],代表⼀定有⼀个中括号内的字符,记住是⼀个
实例:
ls /*[a]*
[-],代表⼀个区间的所有数字,例如[0-9]
实例:
ls /etc/*[0-9]*
etc⽬录下⽂件名含有数字的⽂件或⽬录
[^],反选,和[]相反,指不包含[]⾥⾯的字符即可,例如[^0-9]指⼀定有⼀个字符,但不包含数字
实例:
ls /etc/*[^0-9]*
etc⽬录下⽂件名不包含数字的⽂件或⽬录
特殊符号
#,注释符号
\,转义符,可以把特殊字符和通配符还原成⼀般字符
|,管道符号,⽤于把两个命令的前执⾏结果进⾏重导向
;连续命令执⾏分隔符,例如ls; echo $PATH,可以同时执⾏两个命令,并且输出两个的执⾏结果
~,⽤户主⽬录,cd ~就能回到⽤户的主⽬录
$,变量前导符
!,逻辑⾮的意思
/,路径分隔符
>,数据流输出,覆盖式
>>,数据流输出,叠加式,在原有⽂件的末尾继续添加
<,数据流输⼊
<<,数据流输⼊
'',单引号,多个字符中间有空格是⼀⽤单引号当做⼀个整体,不具有保留变量能⼒
"",双引号,多个字符中间有空格是⼀⽤单引号当做⼀个整体,具有保留变量能⼒
``,反引号,中间的命令先执⾏,和$()相同。

linux shell if 逻辑‘与’运算符 例子

linux shell if 逻辑‘与’运算符 例子

linux shell if 逻辑‘与’运算符例子标题:Linux Shell中的逻辑‘与’运算符及其用法示例引言:在Linux Shell编程中,掌握逻辑运算符是非常重要的。

其中,逻辑‘与’运算符是用来判断两个条件是否同时满足的运算符,也是编写Shell脚本中常用的一种方式。

本文将详细介绍逻辑‘与’运算符的使用方法,并给出具体的示例,以帮助读者更好地理解和运用该运算符。

第一部分:逻辑运算符简介1.1 逻辑运算符的概念在计算机编程的世界中,逻辑运算符是用来连接多个条件表达式的关键词,通过这些关键词可以实现逻辑运算。

逻辑运算符可以分为逻辑‘与’、逻辑‘或’和逻辑‘非’三种。

1.2 逻辑‘与’运算符介绍逻辑‘与’运算符用于连接两个条件,并且只有当两个条件都满足时,整个表达式才为真。

在Linux Shell中,逻辑‘与’运算符的符号表示为"&&"。

例如,条件A && 条件B,表示当条件A和条件B都为真时,整个表达式为真。

第二部分:逻辑‘与’运算符的使用方法2.1 基本语法在Shell脚本中,可以使用中括号([])或者双括号([[]])来表示条件表达式。

逻辑‘与’运算符在中括号中使用时,语法为:[ 条件A ] && [ 条件B ]或者在双括号中使用时,语法为:[[ 条件A && 条件B ]]2.2 逻辑‘与’运算符的示例为了更好地理解逻辑‘与’运算符的使用方法,下面给出几个具体的示例:示例1:检查文件是否存在并且为可读状态file="/path/to/file"if [ -f "file" ] && [ -r "file" ]; thenecho "文件存在并且可读"elseecho "文件不存在或者不可读"fi在上述示例中,脚本首先使用条件表达式[ -f "file" ]检查文件是否存在,如果存在则继续执行第二个条件表达式[ -r "file" ],检查文件是否可读。

linuxshell备注(一)

linuxshell备注(一)

linuxshell备注(⼀)1、特殊字符#!/bin/bash# $表⽰当前PID IDecho $$# $n是shell脚本的参数,当0是第⼀个参数,即⽂件名echo $0# $#是shell当前脚本的参数个数# 例如:sh03.sh123# 输出: 3echo $## $*是shell当前脚本所有的参数# 例如:sh03 123# 输出: "1 2 3"echo $*# $@是shell当前脚本所有的参数# 例如:sh03 123# 输出: "1""2""3"echo $@## $? 上个命令的退出状态function show(){return 1}show# 输出: 1echo $?2、各种括号#!/bin/bash# () 数组初始化array=(item1 item2)# 输出:item1echo ${array[0]}# (()) 作为运算符扩展# 输出:2a=1((a=a+1))echo $a#输出:trueif((a==2));thenecho'true'fi# [] bash 中 test 命令的简写。

即所有的 [ expr ] 等于 test expr# 两侧需要加上空格# 输出: equalnum1=100num2=100if test $num1 -eq $num2;thenecho'equal'elseecho'not equal'finum3=100# 输出:equalif [ $num1 -eq $num3 ];thenecho'equal'elseecho'not equal'fi# [[]] 是bash中标准的条件判断语句# 两侧需要加上空格if [[ $num1 -gt 50 ]];thenecho'bigger'fi。

Linu特殊符号大全

Linu特殊符号大全

Linux特殊符号大全在shell中常用得特殊符号罗列如下:#;;;、, /\ 'string’| !$${}$?$$$*"string"* **?: ^ $#$`mand`{}[][[]]() (())||&&{xx,yy,zz,、、、}~~+~-& \<、、、\>+ - %= == !=#井号(ments)这几乎就是个满场都有得符号,除了先前已经提过得"第一行"#!/bin/bash井号也常出现在一行得开头,或者位于完整指令之后,这类情况表示符号后面得就是注解文字,不会被执行。

#This line isments、echo"a=$a” #a=0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上#就行了。

这常用在撰写过程中。

#echo "a=$a”# a=0如果被用在指令中,或者引号双引号括住得话,或者在倒斜线得后面,那她就变成一般符号,不具上述得特殊功能。

~帐户得home 目录算就是个常见得符号,代表使用者得home 目录:cd ~;也可以直接在符号后加上某帐户得名称:cd ~user或者当成就是路径得一部份:~/bin~+ 当前得工作目录,这个符号代表当前得工作目录,她与内建指令pwd得作用就是相同得。

# echo~+/var/log~—上次得工作目录,这个符号代表上次得工作目录。

#echo ~-/etc/d/logs; 分号(mand separator)在shell中,担任”连续指令"功能得符号就就是”分号”。

譬如以下得例子:cd ~/backup;mkdir startup;cp ~/、*startup/、;;连续分号(Terminator)专用在case得选项,担任Terminator 得角色。

case "$fop" inhelp)echo "Usage:mand -help -version ";;version)echo ”version 0、1”;;esac、逗号(dot,就就是“点”)在shell中,使用者应该都清楚,一个dot 代表当前目录,两个dot 代表上层目录。

linux基本shell语法

linux基本shell语法

linux基本shell语法1. 执行命令:输入命令后按下回车键即可执行。

2. 变量赋值:使用等号(=)将值赋给变量,例如:`variable_name=value`3. 输出变量:使用`echo`命令输出变量的值,例如:`echo variable_name`4. 注释:使用井号(#)来添加注释,注释会被解释器忽略。

5. 重定向输入输出:使用重定向符号来将命令的输入输出重定向到文件中,例如:`command > output_file` (将命令的输出重定向到文件)或 `command < input_file` (将文件内容作为命令的输入)6. 管道:使用竖线(|)将前一个命令的输出作为后一个命令的输入,例如:`command1 | command2` (将command1的输出作为command2的输入)7. 执行前一个命令的退出状态码:使用美元符号和问号(?)获取前一个命令的退出状态码(0表示命令成功执行),例如:`echo ?`8. 条件判断:使用`if`语句进行条件判断,例如:```if conditionthencommand1elsecommand2fi```9. 循环:使用`for`和`while`循环进行迭代操作,例如:```for item in listdocommanddone``````while conditiondocommanddone```10. 函数定义和调用:使用`function`关键字定义函数,例如:```function function_name {command1command2return value}``````function_name```以上是一些基本的Linux shell语法,还有更多高级用法可以进一步学习和探索。

shell中括号的特殊用法linuxif多条件判断

shell中括号的特殊用法linuxif多条件判断

shell中括号的特殊⽤法linuxif多条件判断⼀. bash [ ] 单双括号基本要素:Ø [ ] 两个符号左右都要有空格分隔Ø 内部操作符与操作变量之间要有空格:如 [ “a” = “b” ]Ø 字符串⽐较中,> < 需要写成\> \< 进⾏转义Ø [ ] 中字符串或者${}变量尽量使⽤"" 双引号扩住,避免值未定义引⽤⽽出错的好办法Ø [ ] 中可以使⽤ –a –o 进⾏逻辑运算Ø [ ] 是bash 内置命令:[ is a shell builtin1.时逻辑操作符-a逻辑与,操作符两边均为真,结果为真,否则为假。

-o逻辑或,操作符两边⼀边为真,结果为真,否则为假。

!逻辑否,条件为假,结果为真。

举例: [ -w result.txt-a -w score.txt ] ;echo $? // 测试两个⽂件是否均可写⼆. bash [[ ]] 双⽅括号基本要素:Ø [[ ]] 两个符号左右都要有空格分隔Ø 内部操作符与操作变量之间要有空格:如 [[ “a” = “b” ]]Ø 字符串⽐较中,可以直接使⽤ > < ⽆需转义Ø [[ ]] 中字符串或者${}变量尽量如未使⽤"" 双引号扩住的话,会进⾏模式和元字符匹配[root@localhostkuohao]# [[ "ab"=a* ]] && echo "ok"okØ [[] ] 内部可以使⽤ && || 进⾏逻辑运算Ø [[ ]] 是bash keyword:[[ is a shell keyword[[ ]] 其他⽤法都和[ ] ⼀样⼆者共同特性:Ø && ||-a –o 处理[ exp1 -a exp2 ] = [[ exp1 && exp2 ]] = [ exp1 ]&& [ exp2 ] = [[ exp1 ]] && [[ exp2 ]][ exp1 -o exp2 ] = [[ exp1 || exp2 ]] = [ exp1 ]|| [ exp2 ] = [[ exp1 ]] || [[ exp2 ]][root@localhost ~]# if [[ "a" == "a" && 2 -gt1 ]] ;then echo "ok" ;fiok[root@localhost ~]# if [[ "a" == "a" ]] && [[2 -gt 1 ]] ;then echo "ok" ;fiok[root@localhost ~]# if [[ "a" == "a" ]] || [[ 2 -gt 1]] ;then echo "ok" ;fiok[root@localhost ~]# if [[ "a" == "a" ]] || [[ 2 -gt10 ]] ;then echo "ok" ;fiok[root@localhost ~]# if [[ "a" == "a" || 2 -gt 10 ]] ;then echo "ok" ;fiokØ [[ ]] 和 [ ] 都可以和 ! 配合使⽤优先级 ! > && > ||逻辑运算符 < 关系运算符逻辑运算符: ! && || -a -o关系运算符: < > \> \< == = != – eq –ne -gt -ge –lt -le-----------------------------------------------------------------------------n [[ ]] ⽐[ ] 具备的优势-----------------------------------------------------------------------------①[[是 bash 程序语⾔的关键字。

shell中-z的用法

shell中-z的用法

shell中-z的用法Shell中的`[ ]`符号,按照题目要求,我们将详细讨论它的用法、作用以及用法步骤。

让我们一步一步地回答这个问题。

# 第一步:认识`[ ]`符号在Shell中,方括号`[ ]`可以用来执行条件测试。

它通常与`if`语句或循环结构(如`for`和`while`)一起使用,用于判断条件是否成立。

# 第二步:条件测试条件测试是指判断变量或表达式是否满足特定条件。

在Shell中,可以使用`[ ]`符号来执行条件测试。

`[ ]`内部的条件测试可以使用各种运算符和表达式,包括比较运算符(如`-eq`、`-ne`、`-lt`、`-gt`、`-le`、`-ge`)、逻辑运算符(如`-a`、`-o`、`!`)、正则表达式匹配(如`=~`)等等。

条件测试的结果是一个布尔值,即`true`或`false`。

根据条件测试的结果,我们可以执行不同的操作。

# 第三步:使用`[ ]`符号进行条件测试下面是使用`[ ]`符号进行条件测试的一些常见用例:1. 检查两个数是否相等:if [ a -eq b ]thenecho "两个数相等"fi2. 检查字符串是否相等:if [ "str1" = "str2" ]thenecho "两个字符串相等" fi3. 检查文件是否存在:if [ -e "file" ]thenecho "文件存在"fi4. 检查变量是否为空:if [ -z "str" ]thenecho "字符串为空"fi5. 检查变量是否为数字:if [ "var" -eq "var" ] 2>/dev/nullthenecho "变量为数字"fi# 第四步:注意事项在使用`[ ]`符号进行条件测试时,需要注意以下几点:1. `[ ]`内部的条件表达式必须用空格隔开,`[`和`]`与表达式之间也需要空格。

linux shell 三目运算符

linux shell 三目运算符

linux shell 三目运算符什么是Linux Shell的三目运算符?在Linux Shell编程中,三目运算符是一种特殊的运算符,用于根据条件来决定执行的操作。

它由三个部分组成:条件,真值时的操作,假值时的操作。

具体语法如下:[ 条件] ? [ 真值时的操作] : [ 假值时的操作]三目运算符的作用是在一行代码中完成条件判断并执行相应的操作,从而简化代码,提高执行效率。

例子:shellage=25is_adult= [ age -ge 18 ] ? "Yes" : "No"echo "Is the person an adult? is_adult"在上面的例子中,我们使用三目运算符来判断年龄是否满足成年条件。

如果年龄大于等于18岁,变量`is_adult`的值将被设置为"Yes",否则为"No"。

最后,我们使用`echo`语句打印出`is_adult`的值。

如何使用Linux Shell的三目运算符?要使用Linux Shell的三目运算符,首先需要理解条件表达式,以及要执行的真值操作和假值操作。

1. 条件表达式:条件表达式是一个可以进行逻辑判断的表达式。

这可以是变量比较、字符串比较、文件存在性检查等等。

条件表达式必须用中括号括起来。

2. 真值操作:真值操作是在条件表达式为真时执行的操作。

这可以是赋值语句、函数调用、输出语句等等。

3. 假值操作:假值操作是在条件表达式为假时执行的操作。

和真值操作类似,可以是赋值语句、函数调用、输出语句等等。

下面我们将一步一步详细说明如何使用Linux Shell的三目运算符。

步骤一:确定条件表达式首先,在使用三目运算符之前,我们需要确定条件表达式。

条件表达式可以是任何适用于Shell的逻辑判断表达式。

这可以是数值比较、字符串比较、文件存在性检查等等。

条件表达式必须用方括号括起来,并且在方括号内使用正确的语法。

linux中的特殊符号$‘’反引号反斜杠

linux中的特殊符号$‘’反引号反斜杠

linux中的特殊符号$‘’反引号反斜杠写在前⾯:Shell中的特殊字符有$ 美元符\ 反斜杠` 反引号"双引号< ,>;,*,?,[,]1、反引号``:命令替换在输出⼀句话的时候,如果想中间加⼊命令输出结果,在反引号⾥⾯输⼊命令就可以做到,和$COMMAND是⼀样的。

[root@localhost ~]# echo today is `date +%F`today is 2016-08-032、双引号"":弱引⽤,可以实现变量和命令的替换。

在双引号中可以使⽤变量,⽤$COMMAND。

[root@localhost ~]# x=*[root@localhost ~]# echo "$x"[root@localhost ~]# echo "`date`"3、单引号'':强引⽤,不完成变量替换在单引号中不能使⽤任何变量和命令。

[root@localhost ~]# x=*[root@localhost ~]# echo '$x'$x[root@localhost ~]# echo '`date`'`date`4、$符号作⽤1:⽤于引⽤变量内容变;等号赋值,变量赋值作⽤2:⽤于⾏结束符作⽤3:变量的间接引⽤;作⽤4:变量的参数替换作⽤5:特殊位置符$0返回脚本名称,绝对路径;`basename $0`仅返回脚本名称,没有路径1)echo $? 显⽰的是上⼀条指令退出状态2)echo "$?" 效果同上3)echo '$?' 显⽰的是$?4)echo \$? 显⽰的是$?5)echo "\$?" 显⽰的是$?⼤家可能已经看出 $符号在双引号中具有特殊意义 双引号对$符号不起作⽤,⽽单引号可以将特殊字符的的特殊意义屏蔽掉,使其能显⽰为字符本⾝,反斜杠也可以将特殊字符的特殊含义屏蔽掉,使特殊字符失去特殊含义。

shell 分割符号

shell 分割符号

Shell 分割符号介绍Shell 分割符号是在Shell脚本中用来分割字符串或者命令参数的特殊字符。

Shell 分割符号可以帮助我们对字符串进行处理,拆分成多个部分,或者将命令的参数分开进行处理。

本文将介绍Shell脚本中常见的分割符号及其用法。

空格分割符号空格是Shell中最常用的分割符号之一。

当我们在Shell脚本中使用空格时,会默认根据空格将字符串或者参数分成多个部分。

比如:var="hello world"echo $var以上代码会将字符串”hello world”分割成两部分,分别为”hello”和”world”。

等号分割符号等号也是一种常见的分割符号。

在Shell脚本中,等号通常用于将变量名和变量值进行分割。

例如:name="John"echo $name以上代码将会将变量名”name”和变量值”John”分开,输出”John”。

冒号分割符号冒号是一种特殊的分割符号,在Shell脚本中有多种用途。

以下是冒号的一些常见用法:空命令在Shell中,分号可以用来表示一个空命令。

比如::以上代码表示一个空命令,没有任何实际的操作。

分割路径冒号还可以用于分割路径。

在Unix/Linux系统中,环境变量$PATH是用冒号来分割不同的路径的。

例如:echo $PATH以上代码会将$PATH中的路径使用冒号分割并输出。

双竖线分割符号双竖线是一种逻辑运算符,在Shell脚本中也可以用作分割符号。

双竖线可以用来分割两个命令,当第一个命令执行失败时才会执行第二个命令。

例如:command1 || command2以上代码表示当command1执行失败时,才会执行command2。

分号分割符号分号是一种常见的分割符号,它可以用于将多个命令放在一行中执行。

例如:command1; command2以上代码表示先执行command1,再执行command2。

换行符分割符号换行符是一种特殊的分割符号,它用于将多个命令放在不同的行中执行。

linuxshell编程系列之-—02命令行下文件名中包含特殊符号如何的处理方法

linuxshell编程系列之-—02命令行下文件名中包含特殊符号如何的处理方法

linuxshell编程系列之-—02命令⾏下⽂件名中包含特殊符号如何的处理⽅法问题描述前⾯在实际运⾏过程中碰到如下问题某次⼀模块SQL脚本执⾏完成后,再次执⾏还会运⾏,即备份执⾏完成的脚本这个功能没起作⽤,初步断定是脚本名中有某种特殊符号导致的分析:linux中碰到⽂件名中有空格的处理⽅法①使⽤引号将⽂件名括起来: touch "Me like yuh.mp3"②空格前使⽤连接符号""转义: touch Me\ like\ yuh.mp3 “\”③下⾯脚本可将⽂件名中间的空格⽤下划线_替换(注意:并不能替换⽂件名后⾯的空格)如下所⽰find . -type f -name "* *" -print |while read name; dona=$(echo $name | tr ' ' '_')if [[ $name != $na ]]; thenmv "$name" "$na"fidone⽂件名后⾯的空格for file in *; do mv "$file" echo "$file" | tr ' ' '\n' ; donefor file in ' '; do mv "$file" echo "$file" | sed -e 's/ /n/g'; done解决办法1. sql⽂件执⾏完成在备份时,如果⽂件名中间有空格,将中间空格替换为_2. 在⽐较⽂件名是否⼀致时,兼容有空格的⽂件名扩展--碰到⽂件名中有其他特殊字符如何处理1. 最直接的办法,使⽤时候⽤绝对路径,如:touch ./tmp/Me like yuh.mp32. 不同类型特殊符号处理:2.1 不需要处理的具有加号(+),有百分⽐(%)有^有⼤括号{}有⽅括号[]有得分(_)下有等于(=)有问号(?)有逗号(,)有冒号(:)2.2 需要处理的⽂件类型处理⽅式具有破折号(-)的⽂件$ touch -- -abc.txt具有HASH(#)的⽂件$ touch '#abc.txt'具有分号(;)的⽂件$ touch ';abc.txt'具有美元符号($)的⽂件$ touch '$12.txt'具有感叹号(!)的⽂件$ touch '!12.txt'具有符号(@)的⽂件$ touch '@12.txt'具有&符(&)的⽂件$ touch '&12.txt'具有括号()的⽂件$ touch '(12.txt)'具有反斜线(\)$的⽂件$ touch '\12.txt'具有Chevrons <>的⽂件名$ touch ''⽂件类型处理⽅式2.3 其他类型具有星号(*)的⽂件不需要处理的,删除选时间需要注意前倾斜的特殊情况你不能创建⼀个⽂件名,其中包括正斜杠(/)直到你的⽂件系统错误。

shell脚本关键字符号

shell脚本关键字符号

shell脚本关键字符号shell概念"shell"既是⼀种解释型编程语⾔,也是⼀个这种编程语⾔的解释器的名字shell是解释型语⾔,就是解释器会⼀条⼀条的翻译每⼀条语句并执⾏,对⽐之下,C语⾔是编译型语⾔,编译器把整个⼯程编译成可执⾏⽂件才能执⾏在没有续⾏符(\回车)的情况下,shell脚本的⼀条语句以"回车"为结束任何⼀个shell脚本程序都必须在开头⽤#!标识使⽤的shell程序,如果⽤的是bash,那就是#!/bin/shshell脚本⼀⾏中的#之后的部分为注释刚刚写完的⼀个shell script程序通常是没有执⾏权限的,需要⼿动$chmod +x filename.sh来添加可执⾏权限shell语⾔本⾝并不包含linux内置的命令,那些命令本质上都是⼀个可以在shell环境中执⾏的程序,只是在shell环境中执⾏shell脚本可以调⽤这些程序⽽已。

特殊符号$表⽰取结果。

和变量名⼀起使⽤表⽰取变量的值,和()⼀起使⽤表⽰取命令群组的执⾏结果$tunset=123$echo "$tunset"123$echo $(ls Downloads)lukas-h.github.io-theme.zip youdao-dict_1.1.0-0-deepin_amd64.deb( )表⽰在"nested sub-shell"中划分⼀个命令群组(command group),如果我们希望⾥⾯的命令对之前和之后的设定不影响的话,就要⽤(),反之,如果需要在当前shell(non-named command group)中执⾏相关命令,就要⽤{}表⽰命令群组。

在数学计算中就是数学中的()定义数组$cat shell.sh;./shell.sh#!/bin/bashline="123 25 36532 454"(line="wwww"echo "$line")echo "$line"wwww123 25 36532 454$arr=(0 1 2 var) #定义⼀个数组$echo "${arr[0]}" #显⽰数组下标为0的元素{ }⽤作范围限定标明在"non-named command shell"中执⾏的命令群组。

shell中各种括号()、(())、[]、[[]]、{}的作用和区别

shell中各种括号()、(())、[]、[[]]、{}的作用和区别

shell中各种括号()、(())、[]、[[]]、{}的作⽤和区别$()和 ` `在 bash shell 中,$( ) 与` ` (反引号) 都可⽤做命令替换⽤。

例如version=$(uname -r)和version=`uname -r`都可以是version得到内核的版本号各⾃的优缺点:1. ` ` 基本上可⽤在全部的 unix shell 中使⽤,若写成 shell script ,其移植性⽐较⾼,但反单引号容易打错或看错。

2. $()并不是所有shell都⽀持。

${ }${ }⽤于变量替换。

⼀般情况下,$var 与${var} 并没有什么不⼀样,但是⽤ ${ } 会⽐较精确的界定变量名称的范围。

例如$ A=B$ echo $AB原本是打算先将 $A 的结果替换出来,然后再补⼀个 B 字母于其后,但在命令⾏上,真正的结果却是只会提换变量名称为 AB 的值出来…若使⽤ ${ } 就没问题了:$ echo ${A}BBB${ }的模式匹配功能:# 是去掉左边(在键盘上#在$之左边)% 是去掉右边(在键盘上%在$之右边)#和%中的单⼀符号是最⼩匹配,两个相同符号是最⼤匹配。

${variable#pattern}:shell在variable中查找,看它是否以给定的模式pattern开始,如果是,就从命令⾏把variable中的内容去掉左边最短的匹配模式${variable##pattern}:shell在variable中查找,看它是否以给定的模式pattern开始,如果是,就从命令⾏把variable中的内容去掉左边最长的匹配模式${variable%pattern}:shell在variable中查找,看它是否以给定的模式pattern结尾,如果是,就从命令⾏把variable中的内容去掉右边最短的匹配模式${variable%%pattern}:shell在variable中查找,看它是否以给定的模式pattern结尾,如果是,就从命令⾏把variable中的内容去掉右边最长的匹配模式这四种模式中都不会改变variable的值,其中,只有在pattern中使⽤了*匹配符号时,%和%%,#和##才有区别。

Shell脚本中单引号(‘)和双引号(“)的使用区别

Shell脚本中单引号(‘)和双引号(“)的使用区别

Shell脚本中单引号(‘)和双引号(“)的使⽤区别
在Linux操作系统上编写Shell脚本时候,我们是在变量的前⾯使⽤$符号来获取该变量的值,通常在脚本中使⽤”$param”这种带双引号的格式,但也有出现使⽤'$param'这种带引号的使⽤的场景,⾸先⼤家看⼀段例⼦:
复制代码代码如下:
[root@linux ~]# name=TekTea
[root@linux ~]# echo $name
TekTea
[root@linux ~]# sayhello=”Hello $name”
[root@linux ~]# echo $sayhello
Hello TekTea
[root@linux ~]# sayhello='Hello $name'
[root@linux ~]# echo $sayhello
Hello $name
发现了吗?没错!使⽤了单引号的时候,那 $name将失去原有的变量内容,仅为⼀般字符的显⽰型态⽽已!这⾥必需要特别⼩⼼在意!
所以,单引号与双引号的最⼤不同在于双引号仍然可以保有变量的内容,但单引号内仅能是⼀般字符,⽽不会有特殊符号,我们也可以这⾥理解:'$sayhello' 与 “\$sayhello”是相同的。

在Shell脚本开发过程中,针对变量的单引号(‘)和双引号(“)都是有应⽤场景的,根据我的经验总结起来就是:
1. 获取变量值的时候就使⽤双引号(“),这是基本⽤法。

2. 如果是在脚本中要编写⼀个新的脚本,同时这个新的脚本中还需要包含变量,你就可以选择使⽤单引号(‘)了,特别是⽣成⼀个临时的expect脚本时,单引号(‘)就会经常使⽤到的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

肄在 shell 中常用的特殊符号罗列如下: 羈 # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{}[] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == !=羇输出/ 输入重导向膅 > >> < << : > &> 2&> 2<>>& >&2膂 # 井号 (comments)莈这几乎是个满场都有的符号,除了先前已经提过的 " 第一行 "螈#!/bin/bash芆井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文 字,不会被执行。

芀 # This line is comments.肁 echo "a = $a" # a = 0蒈由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。

这常用在 撰写过程中。

肃 #echo "a = $a" # a = 0蚃如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符 号,不具上述的特殊功能。

薀 ~ 帐户的 home 目录膈算是个常见的符号,代表使用者的 home 目录: cd ~ ;也可以直接在符号后加上某帐户 的名称: cd ~user肅或者当成是路径的一部份: ~/bin ;~+ 当前的工作目录, 这个符号代表当前的工作目录, 她和内建指令 pwd 的作用是相同的。

螁 # echo ~+/var/log~- 上次的工作目录,这个符号代表上次的工作目录。

羀 # echo ~-/etc/httpd/logs蚅 ; 分号 (Command separator)肃 Linux shell特殊符号学习汇总膆在shell 中,担任"连续指令"功能的符号就是"分号" 。

譬如以下的例子:cd ~/backup ; mkdir startup ; cp ~/.* startup/.膃;; 连续分号(Terminator)荿专用在case 的选项,担任Terminator 的角色。

蒅case "$fop" inhelp) echo "Usage: Command -help -version filename" ;;version) echo "version0.1" ;;esac羃. 逗号(dot)节在shell 中,使用者应该都清楚,一个dot 代表当前目录,两个dot 代表上层目录。

蝿CDPATH=.:~:/home:/home/web:/var:/usr/local膆在上行CDPATH 的设定中,等号后的dot 代表的就是当前目录的意思。

羅如果档案名称以dot 开头,该档案就属特殊档案,用ls 指令必须加上-a 选项才会显示。

除此之外,在regular expression 中,一个dot 代表匹配一个字元。

莀'string' 单引号(single quote)芈被单引号用括住的内容,将被视为单一字串。

在引号内的代表变数的$ 符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。

羆heyyou=homeecho '$heyyou' # We get $heyyou肆"string" 双引号(double quote)螃被双引号用括住的内容,将被视为单一字串。

它防止通配符扩展,但允许变量扩展。

这点与单引数的处理方式不同。

蚇heyyou=homeecho "$heyyou" # We get home蚆`command` 倒引号(backticks)袃在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行。

要处理这种情况,我们得用倒单引号来做。

袁fdv=`date +%F`echo "Today $fdv" 莁在倒引号内的date +%F 会被视为指令,执行的结果会带入fdv 变数中。

莇, 逗点(comma)袅这个符号常运用在运算当中当做"区隔"用途。

如下例芃#!/bin/bashlet "t1 = ((a = 5 + 3, b = 7 - 1, c = 15 / 3))"echo "t1 = $t1, a = $a, b = $b"螀/ 斜线(forward slash)膇在路径表示时,代表目录。

蚂cd /etc/rc.dcd ../..cd /莂通常单一的/ 代表root 根目录的意思;在四则运算中,代表除法的符号。

腿let "num1 = ((a = 10 / 2, b = 25 / 5))"袇\ 倒斜线()螄在交互模式下的escape 字元,有几个作用;放在指令前,有取消aliases 的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行。

蒀# type rmrm is aliased to `rm -i'# \rm ./*.log虿上例,我在rm 指令前加上escape 字元,作用是暂时取消别名的功能,将rm 指令还原。

蚈# bkdir=/home# echo "Backup dir, \$bkdir = $bkdir"Backup dir, $bkdir =/home袅上例echo 内的\$bkdir ,escape 将$ 变数的功能取消了,因此,会输出$bkdir ,而第二个$bkdir 则会输出变数的内容/home 。

袂| 管道(pipeline)肈pipeline 是UNIX 系统,基础且重要的观念。

连结上个指令的标准输出,做为下个指令的标准输入。

莈who | wc -l 蚂善用这个观念,对精简script 有相当的帮助。

羁! 惊叹号(negate or reverse)蒈通常它代表反逻辑的作用,譬如条件侦测中,用!= 来代表"不等于"腿if [ "$?" != 0 ]thenecho "Executes error"exit 1fi蚄在规则表达式中她担任" 反逻辑" 的角色莃ls a[!0-9]膁上例,代表显示除了a0, a1 .... a9 这几个文件的其他文件。

薅: 冒号螅在bash 中,这是一个内建指令:"什么事都不干" ,但返回状态值0。

蒂:薀echo $? # 回应为0莅: > f.$$薂上面这一行,相当于cat /dev/null > f.$$ 。

不仅写法简短了,而且执行效率也好上许多。

薀有时,也会出现以下这类的用法肀: ${HOSTNAME?} ${USER?} ${MAIL?}肆这行的作用是,检查这些环境变数是否已设置,没有设置的将会以标准错误显示错误讯息。

像这种检查如果使用类似test 或if 这类的做法,基本上也可以处理,但都比不上上例的简洁与效率。

薄除了上述之外,还有一个地方必须使用冒号羂PATH=$PATH:$HOME/fbin:$HOME/fperl:/usr/local/mozilla葿在使用者自己的HOME 目录下的.bash_profile 或任何功能相似的档案中,设定关于路径"的场合中,我们都使用冒号,来做区隔。

袆? 问号(wild card)蚅在文件名扩展(Filename expansion) 上扮演的角色是匹配一个任意的字元,但不包含null 字元。

肁# ls a?a1袈善用她的特点,可以做比较精确的档名匹配。

薆* 星号(wild card)蒃相当常用的符号。

在文件名扩展(Filename expansion) 上,她用来代表任何字元,包含null 字元。

蒃# ls a*a a1 access_log莈在运算时,它则代表"乘法"。

莇let "fmult=2*3"蒄除了内建指令let ,还有一个关于运算的指令expr ,星号在这里也担任"乘法"的角色。

不过在使用上得小心,他的前面必须加上escape 字元。

薁** 次方运算羁两个星号在运算时代表"次方" 的意思。

肇let "sus=2**3"echo "sus = $sus" # sus = 8薅$ 钱号(dollar sign)蚀变量替换(Variable Substitution) 的代表符号。

蒁vrs=123echo "vrs = $vrs" # vrs = 123螈另外,在Regular Expressions 里被定义为"行" 的最末端(end-of-line) 。

这个常用在grep 、sed 、awk 以及vim(vi) 当中。

莃${} 变量的正规表达式肂bash 对${} 定义了不少用法。

以下是取自线上说明的表列袀${parameter:-word} ${parameter:=word} ${parameter:?word}${parameter:+word} ${parameter:offset} ${parameter:offset:length}${!prefix*} ${#parameter} ${parameter#word} ${parameter##word}${parameter%word} ${parameter%%word} ${parameter/pattern/string}${parameter//pattern/string}薈$* 引用script 的执行引用变量,引用参数的算法与一般指令相同,指令本身为0 ,其后为 1 ,然后依此类推。

引用变量的代表方式如下:蒄$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11} ....膁个位数的,可直接使用数字,但两位数以上,则必须使用{} 符号来括住。

艿$* 则是代表所有引用变量的符号。

使用时,得视情况加上双引号。

芈echo "$*"蒆还有一个与$* 具有相同作用的符号,但效用与处理方式略为不同的符号。

相关文档
最新文档