如果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脚本处理数据,需要检测数据文件是否存在,文件名中包含日期,所以需要生成最近几天的日期,以便检测文件是否存在,看下面的脚本中如何使用双引号、单引号、反引号:

[plain]  view plain copy
  1. OPDATE=`date -d '-1 day' +%Y%m%d`
  2. for i in $(seq 10)
  3. do
  4. FILEDATE=`date -d "-$i day" +%Y%m%d`
  5. echo ${FILEDATE}
  6. 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内容如下:

  1. cd `dirname $0`
  2. echo `pwd`

然后返回到/home/admin/执行

  1. sh test/test.sh

运行结果:

  1. /home/admin/test

这样就可以知道一些和脚本一起部署的文件的位置了,只要知道相对位置就可以根据这个目录来定位,而可以不用关心绝对位置。这样脚本的可移植性就提高了,扔到任何一台服务器,(如果是部署脚本)都可以执行。

shell 脚本中双引号、单引号、反引号的区别,其他命令相关推荐

  1. Shell脚本中 双引号(“”)单引号(‘’)反引号(``)的区别

    1.由单引号括起来的字符都作为普通字符出现.特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释. 2.由双引号括起来的字符,除$(美元符号).\(反斜杠).'(单引号).和" ...

  2. 关于shell脚本中双括号的问题

    这段时间在写shell脚本,很疑惑的是,网上对shell变量的运算使用双括号"(())",于是在网上查了查: 使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号 ...

  3. shell脚本中/bin/bash的作用

    shell脚本通常第一句是#!/bin/bash,在很多情况中,如果没有设置好这一行,那么该程序很可能无法执行,因为系统无法判断该程序需要使用什么shell来执行 通俗点讲,#!/bin/bash: ...

  4. shell脚本中一些特殊符号

    shell脚本中一些特殊符号 在shell中常用的特殊符号罗列如下: # ;   ;; . , / \\ 'string'| !   $   ${}   $? $$   $* \"strin ...

  5. shell脚本中的一些特殊符号

    shell脚本中一些特殊符号 在shell中常用的特殊符号罗列如下: # ;   ;; . , / \\ 'string'| !   $   ${}   $? $$   $* \"strin ...

  6. 在shell脚本中如何调用hadoop 命令

    我们在shell脚本中可能会用到hadoop或者其他命令,而这些命令可能是一个整体,如果我们只是简单的写入到shell脚本中,可能会被分解成其他的各个子字段,即有可能会分成两部分去执行,这样就会导致命 ...

  7. shell脚本中的变量

    shell脚本中的变量 1 变量的定义 2 shell脚本中变量的定义方法 2.1 环境级别 2.2 用户级别 2.3 系统级别 3 变量名称 4 变量的转译 4.1 转译 4.2 声明 4.3 变量 ...

  8. Shell脚本中获取命令运行结果、特殊变量使用、条件判断等常用操作

    文章目录 前言 获取命令执行结果 使用反引号 `` ` ``command `` ` ``来执行命令 使用括号组合 $(command) 来执行命令 两种方式的区别 特殊变量使用 $0 $1 $2 . ...

  9. shell脚本中的结构化命令(if-then-else、case、for、while、until) 脚本中的循环控制

    1. 结构化命令 上一次我们学习了shell脚本的一些基础知识,包括环境变量.重定向.数学运算.退出脚本的方式等,想了解的可以戳这个: shell脚本基础 之前,在我们的示例shell脚本里,shel ...

最新文章

  1. CS131专题-3:图像梯度、边缘检测(sobel、canny等)
  2. quickpcb添加pcb库_quickpcb使用说明
  3. 小猫咪小狗狗也有智能「手表」了,可监测健康,识别情绪,还防乱跑|CES 2022...
  4. django项目实战(2)-数据库配置
  5. HTML里的哪一部分Javascript 会在页面加载的时候被执行?
  6. mysql 分组 字符串_MySQL查询以字符串字段中的数字字符对行进行分组?
  7. php文件锁解锁是删除对应的文件_软件 | 文件解锁强制删除工具 Wise Force Deleter v1.49...
  8. UVA4671 K-neighbor substrings FFT+字符串hash
  9. *p++和*(p++)的区别_同是华为顶级旗舰,P系和Mate系谁最值得购买?明白这点很重要!...
  10. xadsafe做暗刷_手把手教你如何去掉网吧广告之PUBWin2015_XADSAFE
  11. [AWDwR4] No JQuery call matches [:html, #cart]
  12. 问题:使用pandas中的DataFrame写入csv文件多出一行unnamed,如何解决呢??
  13. mysql a锁_MYSQL中的锁
  14. 初学者,你应当如何学习C++以及编程-转
  15. REST(三)Restlet实现REST
  16. 常见的应用层协议都有哪些?【面试官可能会问系列】
  17. 电子电路计算机仿真应用,电子电路计算机仿真技术
  18. 如何理解惯性问题,是物理学的大问题
  19. c#开发条形码生成器
  20. Spring Cloud 升级之路 - 2020.0.x - 1. 背景知识、需求描述与公共依赖

热门文章

  1. linux shell脚本攻略 第五章 一团乱麻(web处理) wget curl
  2. 不同星座的程序员,拥有怎样的爱情观?
  3. C#调用TSC条码打印机打印条码
  4. rba有哪几個主要組成部分_rba主要由哪部分组成
  5. 数据结构 哈希表 ASL 失败查找
  6. 迷你WiFi摄像机需要多少兆的带宽才不会卡顿
  7. 第1章 SQL Server基本操作
  8. IEEE754数据生成 (附C++代码)
  9. 在线调试后台管理系统HTTP的POST请求
  10. [COI2007] Sabor