命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。shell中有两种方法作命令替换:把shell命令用反引号或者$(...)结构括起来,其中,$(...)格式受到POSIX标准支持,也利于嵌套。

反引号与$()有没有区别?

例如:比如我们有一个shell脚本名为test.sh有一下两行

使用sh -x test.sh来分析bash是如何来解释这个脚本的,返回的信息如下

通过上图我们可以得出两个结论:

反引号中\$并没有将$的特殊意义转换 反引号包含的内容 echo \$hostname 仍然被解释为一个echo $HOSTNAME 取到了这个变量的值并输出所以反引号返回的值为 CentOS-1

$()则正好相反,$明显被\转义成了一个普通字符,所以并没有取到变量值,而是返回了字符串本身的意思,故而返回了$HOSTNAME

这说明反引号对反斜杠(\)有特殊的转化,至少我们看到当我们直接用1个\时,它本身并不会起到转义的作用。现在我们将脚本的内容做一些修改:

我们又多加了1个反斜杠,这次我们来看输出的情况:

这次看起来似乎反转了:

反引号反而输出了$HOSTNAME的字面意思

$()如我们所愿的取到了变量值,并理所应当的输出了一个被转义的字符串\

由此,我们可以得出结论:

1.反引号齐本身就对\进行了转义,保留了齐本身意思,如果我们想在反引号中起到\的特殊意义,我们必须使用2个\来进行表示。所以我们可以简单的想象成反引号中: \\ = \

2.$()中则不需要考虑\的问题,与我们平常使用的一样:\ = \

eval

功能说明:告知shell取出eval的参数,重新运算求出参数的内容。

语  法:eval [参数]

补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。

参  数:参数不限数目,彼此之间用分号分开。

1. eval command-line

其中command-line是在终端上键入的一条普通命令行。然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次。如:

pipe="|"

eval ls $pipe wc -l

shell第1次扫描命令行时,它替换出pipe的值|,接着eval使它再次扫描命令行,这时shell把|作为管道符号了。

如果变量中包含任何需要shell直接在命令行中看到的字符(不是替换的结果),就可以使用eval。命令行结束符(; | &),I/o重定向符(< >)和引号就属于对shell具有特殊意义的符号,必须直接出现在命令行中。

2. eval echo \$$# 取得最后一个参数

如:cat last

eval echo \$$#

./last one two three four

four

第一遍扫描后,shell把反斜杠去掉了。当shell再次扫描该行时,它替换了$4的值,并执行echo命令

3.以下示意如何用eval命令创建指向变量的“指针”:

x=100

ptrx=x

eval echo \$$ptrx 指向ptrx,用这里的方法可以理解b中的例子

100 打印100

eval $ptrx=50 将50存到ptrx指向的变量中。

echo $x

50 打印50

crontab

1.命令格式:

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

2.命令功能:

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

3.命令参数:

-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i:在删除用户的crontab文件时给确认提示。

4.常用方法:

1). 创建一个新的crontab文件

在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和Linux用户都使用vi,如果你也是这样,那么你就编辑$ HOME目录下的. profile文件,在其中加入这样一行:

EDITOR=vi; export EDITOR

然后保存并退出。不妨创建一个名为 cron的文件,其中是用户名,例如, davecron。在该文件中加入如下的内容。

# (put your own initials here)echo the date to the console every

# 15minutes between 6pm and 6am

0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console

保存并退出。确信前面5个域用空格分隔。

在上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:

$ crontab davecron

现在该文件已经提交给cron进程,它将每隔1 5分钟运行一次。

同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。

linux下cron和cron的区别,Linux环境下` `与$()用法的区别eval和crontab的意义相关推荐

  1. 缺少nst linux.mbr文件,用EasyBCD2.0在Windows环境下引导Linux启动

    用EasyBCD2.0在Windows环境下引导Linux启动 以在Win7环境下用EasyBCD2.0.2引导Ubuntu启动为例(Ubuntu安装在Win7之前,倘若反了进不去Win7,可以用Wi ...

  2. Linux离线安装NTP服务,内网环境下配置本地时间同步

    参考文章:Linux离线安装NTP服务,无外网环境下配置本地时间同步 | 航行学园 1.常用命令 rpm -qa | grep ntp #查询已安装的ntp版本信息等 rpm -e --nodeps ...

  3. linux下ipv6地址如何ping,IPv6地址环境下如何使用ping、telnet命令

    IPv6地址环境下如何使用ping.telnet命令 日期:2020-08-12 10:46 浏览次数: 分类:知识库 来源:郑州冰川网络技术有限公 本文主要介绍IPV6通信时,IPv6地址的ping ...

  4. Linux查询命令(cat,more,less,head,tail)的用法与区别。

    cat [optin]... [file]... 主要用途 显示文件内容,如果没有文件或文件为-则读取标准输入. 将多个文件的内容进行连接并打印到标准输出. 显示文件内容中的不可见字符(控制字符.换行 ...

  5. MySQL rpm包 二进制区别_Linux环境下安装mysql5.6(二进制包不是rpm格式)

    一.准备: 1.CentOS release 6.8 2.mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz 3.Linux下MySQL5.6与MySQL5.7安装方法 ...

  6. python中break和continue区别_Python break和continue用法及区别

    Python break和continue用法及区别 在佛教中,常有"超出三界外,不在五行中"的说法,意为摆脱某种循环周始的羁绊,方得解脱.在程序设计中,我们也常有类似的需求.在满 ...

  7. tensorflow环境下的识别食物_在win10环境下进行tensorflow物体识别(ObjectDetection)训练...

    安装ObjectDetection,CPU和GPU都需要 解压module.rar放到C:\TFWS\models目录 地址:https://github.com/tensorflow/models ...

  8. iar环境下c语言编程,STM8在IAR环境下的C语言开发.doc

    STM8在IAR环境下的C语言开发 STM8单片机在IAR环境下的C语言开发 头文件搜索路径设置 在工程管理窗口按右键,选择option,打开选项设置窗口如下 选择C/C++ compiler选项,然 ...

  9. linux vps 运行exe文件夹,在centos环境下运行.exe文件

    首先要了解一下Wine: Wine ("Wine Is Not an Emulator" 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux ...

最新文章

  1. 从零开始在ubuntu上安装和使用k8s集群及报错解决
  2. neo4j仅仅删除关系的语句,注意neo4j是不能删除含有关系的节点的
  3. Common Database Security Tasks_5_30
  4. 北斗导航 | 自主无人系统多传感器融合技术(学术PPT分享附视频链接)
  5. 搭建一个VUE+Express前后端分离的开发环境
  6. HDU 6706 huntian oy
  7. 屠杀机器人和无处不在的监控:AI是我们最大的生存威胁?
  8. 程序员需要了解的硬核知识之操作系统和应用
  9. 3月国内网民地域分布TOP12:广东雄踞榜首 涨幅1.59%
  10. zabbix简介以及利用proxy和agent模式监控
  11. IDEA反编译java.class文件
  12. UCenter单点登录(简单版)
  13. 未能加载文件或程序集 或它的某一个依赖项。试图加载格式不正确的程序。问题解决
  14. 写html和css怎么分屏,如何使用CSS创建分屏(50/50)?
  15. HDOJ 最小长方形 1859
  16. Thor UI - 轻量简洁的免费开源移动端 UI 组件库,支持原生小程序和 uni-app
  17. 边框检测原理与Tensorflow代码
  18. c语言程序设计作业电话簿,C语言设计简易电话簿
  19. fla文件与as文件之间的绑定
  20. word插入Java代码

热门文章

  1. thymeleaf中用ajax
  2. D3.js--Tree(树)
  3. 秀才第三次进京赶考的故事
  4. 对Steering Vector的一点理解
  5. Halcon学习——获取离散点群的外接多边形范围
  6. java进程老挂掉_JAVA进程突然挂掉 - 1024菜bird的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 《销售管理必读12篇》购买方法
  8. JVM入门就看这一篇
  9. 技术晨读积累_20140526
  10. JavaScript-一个贪吃蛇小游戏