一、Shell 单引号、双引号和反引号用法详解

  单引号和双引号用于变量出现空格时,比如 name=zhang san ,这样执行就会出现问题,而必须用引号括起来,比如  name = "zhang san"

不过,引号有单引号和双引号之分,二者的主要区别在于,被单引号括起来的字符都是普通字符,就算特殊字符也不再有特殊含义;

而被双引号括起来的字符中,"$"、"\"和反引号是拥有特殊含义的,"$"代表引用变量的值,而反引号代表引用命令。

[oracle@B2B-bigdata-sm shell]$ name=sc
[oracle@B2B-bigdata-sm shell]$ echo "$name"
sc
[oracle@B2B-bigdata-sm shell]$ echo '$name'
$name
[oracle@B2B-bigdata-sm shell]$ echo `date`
2019年 05月 08日 星期三 16:53:04 CST
[oracle@B2B-bigdata-sm shell]$ echo '`date`'
`date`
[oracle@B2B-bigdata-sm shell]$ echo "`date`"
2019年 05月 08日 星期三 16:53:27 CST

[oracle@B2B-bigdata-sm shell]$ echo $(date)
2019年 05月 08日 星期三 16:56:22 CST

  

  如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行,反引号的作用和$(命令)是一样的,但是反引号非常容易和单引号

搞混,所以推荐大家使用$(命令) 的方式引用命令的输出。 

 

二、${ } 变量替换

  一般情况下,$var与${var} 是没有区别的,但是用${ } 会比较精确的界定变量名称的范围

[oracle@B2B-bigdata-sm shell]$ A=Linux
[oracle@B2B-bigdata-sm shell]$ echo $AB

[oracle@B2B-bigdata-sm shell]$ echo ${A}B
LinuxB

 

三、Linux在shell中日期格式化(时间格式化)

获取前一天的时间

[oracle@B2B-bigdata-sm shell]$ yesterday=`date -d last-day +%Y-%m-%d`
[oracle@B2B-bigdata-sm shell]$ echo $yesterday
2019-05-07

获取当前时间

[oracle@B2B-bigdata-sm shell]$ curday=`date +%Y-%m-%d`
[oracle@B2B-bigdata-sm shell]$ echo $curday
2019-05-08

 

$?  显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

exit (0) 正常运行程序并退出程序

exit (1) 非正常运行导致退出程序。

exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非0值,那么你的程序的使用者通常会认为你的程序产生了一个错误。

在shell中调用完你的程序之后,用 echo  $?  命令就可以看到你的程序的exit值。在shell脚本中,通常会根据上一个命令的 $? 值来进行一些流程控制。

 

 

  

posted on 2019-05-20 16:24  风清_云淡  阅读(116)  评论(0编辑  收藏  举报