shell 脚本中双引号、单引号、反引号的区别,其他命令
如果make
执行的命令前面加了@字符,则不显示命令本身而只显示它的结果; Android中会定义某个变量等于@,例如 hide:= @
通常make
执行的命令如果出错(该命令的退出状态非0)就立刻终止,不再执行后续命令,但如果命令前面加了-
号,即使这条命令出错,make
也会继续执行后续命令。
通常rm
命令和mkdir
命令前面要加-
号,因为rm
要删除的文件可能不存在,mkdir
要创建的目录可能已存在,这两个命令都有可能出错,但这种错误是应该忽略的。
0、
linux shell脚本EOF妙用:
http://blog.csdn.net/zongshi1992/article/details/71693045
1、#set +e #在"set -e"之后出现的代码,一旦出现了返回值非零,整个脚本就会立即退出。
2、# mkdir 命令参数:-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录; -v, --verbose 每次创建新目录都显示信息
3、#[ -n STRING ] 如果STRING的长度非零则返回为真,即非空是真
4、#eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。
5、#echo -n 不换行输出
6、使用 read 命令暂停,等待用户输入,按下任意键都可以继续。
-p:指定读取值时的提示符; -t:指定读取值时等待的时间(秒)。
read -p "Press any key to continue." var
原文出自博主宋哥:http://blog.csdn.net/iamlaosong/article/details/54728393点击打开链接
iamlaosong文
最近要编个shell脚本处理数据,需要检测数据文件是否存在,文件名中包含日期,所以需要生成最近几天的日期,以便检测文件是否存在,看下面的脚本中如何使用双引号、单引号、反引号:
- OPDATE=`date -d '-1 day' +%Y%m%d`
- for i in $(seq 10)
- do
- FILEDATE=`date -d "-$i day" +%Y%m%d`
- echo ${FILEDATE}
- done
1、由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。如例程中的 '-1 day',再比如:
$ string=’$PATH’
$ echo $string
$PATH
$
可见$保持了其本身的含义,作为普通字符出现。
2、由双引号括起来的字符,除$(美元符号)、\(反斜杠)、’(单引号)、和”(双引号)这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待。对于“$”来说,就是用其后指定的变量的值来代替这个变量和$;对于“\”而言,是转义字符,它告诉shell不要对其后面的那个字符进行特殊处理,只当作普通字符即可。可以想见,在双引号中需要在前面加上“\”的只有四个字符$,\,’和”本身。而对”号,若其前面没有加“\”,则Shell会将它同前一个”号匹配。如例程中的"-$i day",会随着循环,将$i转换成其代表的值。
3、反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(’)混淆。反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。如例程中的`date -d '-1 day' +%Y%m%d`就是把这条命令的结果赋给变量OPDATE。
4、反引号还可以嵌套使用。但需注意,嵌套使用时内层的反引号必须用反斜杠(\)将其转义。例如:
$ abc=`echo The number of users is \`who| wc -l\``
$ echo $abc
The number of users is 2
$
5、在反引号之间的命令行中也可以使用shell的特殊字符。Shell为得到``中命令的结果,它实际上要去执行``中指定的命令。执行时,命令中的特殊字符,如$,”,?等又将具有特殊含义,并且``所包含的可以是任何一个合法的Shell命令,如:
$ ls
note readme.txt Notice Unix.dir
$ TestString="`echo $HOME ` ` ls [nN]*`"
$ echo $TestString
/home/yxz note Notice
最后,说句题外话: 反引号是一个老的用法,$()才是新的用法,如例程中的$(seq 10)。无论是在学习中,还是在实际工作中,$()都是被推荐的用法。所以上面的的用法可以改成:
$ TestString="$(echo $HOME) $(ls [nN]*)"
$ echo $TestString
/home/yxz note Notice
对于脚本的执行情况,可以用下面的命令来分析:
sh -x test.sh
出自:http://blog.csdn.net/jackyechina/article/details/52813007
linux 下 `dirname $0`
【`】,学名叫“倒引号”, 如果被“倒引号”括起来, 表示里面需要执行的是命令。
比如 `dirname $0`, 就表示需要执行 dirname $0 这个命令
【“”】 , 被双引号括起来的内容, 里面 出现 $ (美元号: 表示取变量名) `(倒引号: 表示执行命令) \(转义号: 表示转义), 其余的才表示字符串。
【’‘】, 被单引号括起来的内容, 里面所有的都表示串, 包括上面所说的 三个特殊字符。
在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的。因为他返回当前路径的"."。
这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。
$0:当前Shell程序的文件名
dirname $0,获取当前Shell程序的路径
cd `dirname $0`,进入当前Shell程序的目录
在/home/admin/test/下新建test.sh内容如下:
- cd `dirname $0`
- echo `pwd`
然后返回到/home/admin/执行
- sh test/test.sh
运行结果:
- /home/admin/test
这样就可以知道一些和脚本一起部署的文件的位置了,只要知道相对位置就可以根据这个目录来定位,而可以不用关心绝对位置。这样脚本的可移植性就提高了,扔到任何一台服务器,(如果是部署脚本)都可以执行。
shell 脚本中双引号、单引号、反引号的区别,其他命令相关推荐
- Shell脚本中 双引号(“”)单引号(‘’)反引号(``)的区别
1.由单引号括起来的字符都作为普通字符出现.特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释. 2.由双引号括起来的字符,除$(美元符号).\(反斜杠).'(单引号).和" ...
- 关于shell脚本中双括号的问题
这段时间在写shell脚本,很疑惑的是,网上对shell变量的运算使用双括号"(())",于是在网上查了查: 使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号 ...
- shell脚本中/bin/bash的作用
shell脚本通常第一句是#!/bin/bash,在很多情况中,如果没有设置好这一行,那么该程序很可能无法执行,因为系统无法判断该程序需要使用什么shell来执行 通俗点讲,#!/bin/bash: ...
- shell脚本中一些特殊符号
shell脚本中一些特殊符号 在shell中常用的特殊符号罗列如下: # ; ;; . , / \\ 'string'| ! $ ${} $? $$ $* \"strin ...
- shell脚本中的一些特殊符号
shell脚本中一些特殊符号 在shell中常用的特殊符号罗列如下: # ; ;; . , / \\ 'string'| ! $ ${} $? $$ $* \"strin ...
- 在shell脚本中如何调用hadoop 命令
我们在shell脚本中可能会用到hadoop或者其他命令,而这些命令可能是一个整体,如果我们只是简单的写入到shell脚本中,可能会被分解成其他的各个子字段,即有可能会分成两部分去执行,这样就会导致命 ...
- shell脚本中的变量
shell脚本中的变量 1 变量的定义 2 shell脚本中变量的定义方法 2.1 环境级别 2.2 用户级别 2.3 系统级别 3 变量名称 4 变量的转译 4.1 转译 4.2 声明 4.3 变量 ...
- Shell脚本中获取命令运行结果、特殊变量使用、条件判断等常用操作
文章目录 前言 获取命令执行结果 使用反引号 `` ` ``command `` ` ``来执行命令 使用括号组合 $(command) 来执行命令 两种方式的区别 特殊变量使用 $0 $1 $2 . ...
- shell脚本中的结构化命令(if-then-else、case、for、while、until) 脚本中的循环控制
1. 结构化命令 上一次我们学习了shell脚本的一些基础知识,包括环境变量.重定向.数学运算.退出脚本的方式等,想了解的可以戳这个: shell脚本基础 之前,在我们的示例shell脚本里,shel ...
最新文章
- CS131专题-3:图像梯度、边缘检测(sobel、canny等)
- quickpcb添加pcb库_quickpcb使用说明
- 小猫咪小狗狗也有智能「手表」了,可监测健康,识别情绪,还防乱跑|CES 2022...
- django项目实战(2)-数据库配置
- HTML里的哪一部分Javascript 会在页面加载的时候被执行?
- mysql 分组 字符串_MySQL查询以字符串字段中的数字字符对行进行分组?
- php文件锁解锁是删除对应的文件_软件 | 文件解锁强制删除工具 Wise Force Deleter v1.49...
- UVA4671 K-neighbor substrings FFT+字符串hash
- *p++和*(p++)的区别_同是华为顶级旗舰,P系和Mate系谁最值得购买?明白这点很重要!...
- xadsafe做暗刷_手把手教你如何去掉网吧广告之PUBWin2015_XADSAFE
- [AWDwR4] No JQuery call matches [:html, #cart]
- 问题:使用pandas中的DataFrame写入csv文件多出一行unnamed,如何解决呢??
- mysql a锁_MYSQL中的锁
- 初学者,你应当如何学习C++以及编程-转
- REST(三)Restlet实现REST
- 常见的应用层协议都有哪些?【面试官可能会问系列】
- 电子电路计算机仿真应用,电子电路计算机仿真技术
- 如何理解惯性问题,是物理学的大问题
- c#开发条形码生成器
- Spring Cloud 升级之路 - 2020.0.x - 1. 背景知识、需求描述与公共依赖