Shell脚本中的$()和``及eval_shell脚本中的``中有$_小魏同学i的博客-程序员秘密

技术标签: Linux  命令替换  Shell脚本  

1. ``和$()有什么区别?

  在shell脚本中,``和$()是用来完成命令替换的,先执行反引号或括号里面的内容,将结果代换到当前命令。
  例如:
  这里写图片描述

区别:对于转义字符的处理有些不同
  这里写图片描述

``中的转义没有成功,$()中\将$转义成普通字符

  这里写图片描述

``中两个\\$转义成了普通字符,$()中\\的输出结果是\,和一般的转义结果一样
$()中的转义字符和我们平时使用的是一样的,``中保留了转义字符本身的意义,反斜杠为一个时没有意义,
两个连续的反斜杠可以起到作用。``是老的用法,$()是新的用法,在使用时,推荐使用$()。

2. eval命令

  1. eval echo相当于echo
    这里写图片描述

  2. 该命令适用于依次扫描无法完成其功能的变量。
    第一步:对eval后面的命令进行扫描,执行变量替换,普通命令保留
    第二步:执行变量替换后的命令串
    这里写图片描述
    echo 只输出双引号里的内容,eval 输出test文件中的内容

  3. 获得最后一个参数
    这里写图片描述
    第一行获得参数的个数,第二行获得最后一个参数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wei_cheng18/article/details/80916018

智能推荐

Hadoop Mapreduce 案例 wordcount+统计手机流量使用情况_Transkai47的博客-程序员秘密

mapreduce设计思想概念:它是一个分布式并行计算的应用框架它提供相应简单的api模型,我们只需按照这些模型规则编写程序,即可实现"分布式并行计算"的功能。案例一:wordcount经典案例先写map方法package com.gec.demo;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop...

Ubuntu下Android Studio运行中的坑_中国拖拉机手的博客-程序员秘密

无法生成AVD模拟器安装完AS,发现无法生成模拟器AVD,解决方法:首先网上说要安装各种库,例如lib64c++,其实不用,直接在Ubuntu软件更新中更改驱动,将Xorg驱动改为NVIDIA驱动(最好是他的稳定版本)。 参考资源:https://android.stackexchange.com/questions/145437/reinstall-avd-on-ubuntu-16-04/1

编辑器漏洞、越权、逻辑漏洞(不安全的对象引用、功能级别访问控制缺失)_ckfinder漏洞_赤赤三的博客-程序员秘密

编辑器漏洞: Ewebeditor编辑器漏洞 Fckeditor编辑器漏洞 ckfinder编辑器漏洞 旁注、目录越权、跨库、CDN绕过 旁注: 在同一个服务器上有多个站点,我们要攻击的这个站点假设没有漏洞,我们就可以攻击服务器上任意一个站点,这就是旁注 IP逆向查询有多少个站点(通过ping获得其相关地址后,通过ip地址反查其旁注的域名): http://stool.chinaz.com/Same/ http://dns.aizhan.com/ htt...

解决MAC电脑下魅族手机adb无法连接问题_wcjwdq的博客-程序员秘密

MAC电脑本对于开发者而言是一个很方便的东东,但是在对魅族MX手机调试时发现死活连接不上,原来需要做下面的事情:1、首先打开终端,输入命令:system_profiler SPUSBDataType,enter之后可以查看连接的各个usb设备的信息,找到供应商ID(Vendor ID),如MX4的Vendor ID为0x2a45;2、接着在终端输入:echo "0x2a45" > ~/.a

webstorm提示if you already hava a 64-bit JDK……以及 failed to create jvm……_肆爪的博客-程序员秘密

起因是最近webstorm一直提示out of memory,然后最近一次又提示的时候我一气之下把所有数值改成99999,然后重新启动webstorm就提示跟以上图片类似的文字提示。解决方法就是删除一个文件就可以了(我是用户配置文件出错所以用的方法二)c盘/用户/你的电脑/.WebStorm2017.1/vmoption 文件 删掉就可以了一、破解报错可能是破解时修改idea[64].exe.vmoptions文件,导致错误。一般有两种情况:参数写错,或者用记事...

随便推点

内核调用用户空间可执行文件以及潜在问题分析_yearn520的博客-程序员秘密

在Linux中要在用户空间访问内核一般使用ioctl或者系统调用, 反过来从内核调用用户空间方法也非常多,有一种方法就是使用call_usermodehelper_exec 函数。1. 构造参数我们知道在调用一个函数之前需要知道函数地址,参数,环境变量等信息,所以在调用这个函数前

Accept是又产生一个Socket端口吗? _思月行云的博客-程序员秘密

Accept是又产生一个Socket端口吗?      要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,write等几个基本的操作。是的,就跟常见的文件操作一样,只要写过就一定知道。       对于网络编程,我们也言必称TCP/IP,似...

Android开发的基础知识_android基础了解_峥嵘life的博客-程序员秘密

本文对Android架构做详细的介绍和一些个人想法的阐述。

Web安全-JQuery框架XSS漏洞浅析_cve-2020-11022复现_Tr0e的博客-程序员秘密

文章目录框架简介漏洞简述漏洞检测漏洞复现漏洞分析漏洞复现修复建议新版漏洞漏洞复现漏洞原理修复方案漏洞验证框架简介jQuery是一个快速、简洁的JavaScript框架,是一个丰富的JavaScript代码库。jQuery设计的目的是为了写更少的代码,做更多的事情。它封装 JavaScript 常用的功能代码,提供一种简便的 JavaScript 设计模式,优化 HTML 文档操作、事件处理、动画设计和 Ajax 交互。据一项调查报告,在对 433000 个网站的分析中发现,77%的网站至少使用了一个具

python编程:提取word、pdf、excel信息的动词与名词,制作词云图_python 提取中文动词_HanZee的博客-程序员秘密

工具类参数:text:数据mode:word文档选 选wordexcel或者pdf选 mode=‘pdf’import osimport reimport jieba.posseg as jpgfrom wordcloud import WordCloudfrom matplotlib import pyplot as pltimport imageioimport pandas as pdimport xlrdimport xlwtimport shutilclass U

firstChild.nodeValue_bananabear的博客-程序员秘密

假设我们已经有一个dom对象,其内容如内容在javascript中,我们为了获得title的标签和文本,一般需要这样做var title =dom.getElementsByTagName(”title”);alert(title[0].nodeName);//得到“title”alert(title[0].nodeValue)的时候,FF只能获得#text,而IE只能得到null后来查了很多

推荐文章

热门文章

相关标签