Shell下的命令代换与eval命令

  在shell中,如果想获得一个命令的返回值,如果为整数,可以直接用$?获取其退出码.

  但如果一条命令的返回值不是整数,怎么实现?

  不得不提shell下的命令代换功能!

两种方式实现命令代换

  假设我们某个变量需要获得当前时间,则可以这样实现:

  date=`date`

  echo $date

  或者也可以这样

  date=$(date)

  echo $date

  这两种方式都可以实现命令代换的功能,那么他们有何不同?

两种命令代换方式的区别

  1.$()看起来比较简洁,而``很容易与‘’进行混淆.

  2.在多层替换中``需要进行转义,比较麻烦

  3.``的移植性更强,因为$()不保证所有linux系统都能支持

eval命令

  eval命令用来告知shell取出eval的参数,重新运算求出参数内容.

  比如:

  val=123

  cmd="echo $val 456789"

  echo $cmd    #echo 123 456789

  eval $cmd    #123 456789

时间: 2024-11-06 04:42:16

Shell下的命令代换与eval命令的相关文章

shell如何解析命令行以及eval命令

1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e "some files:" ~/i* "\nThe date:$(date +%F)\n$name's age is $((a+4))" >/tmp/a.log 假设在执行该命令前,已赋值变量"name=longshuai"和"a=24",于是重定向到/tmp/a.log中的结果为: some files

shell解析命令行的过程以及eval命令

本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e "some files:" ~/i* "\nThe date:$(date +%F)\n$name's age is $((a+4))" >/tmp/a.log 假设在执行该命令前,已赋值变量"name=longshuai"和"a=

Shell下日期循環

在Shell下,可以通過如下命令設置指定日期往前或者往後N天 date -d "$KNOW_DATE UTC +N days" +"%Y%m%d" date -d "$KNOW_DATE UTC -N days" +"%Y%m%d" 由此可得到下面這種日期循環的代碼: b=`date -d "$BEGIN_DATE" +"%Y%m%d"` e=`date -d "$ENDBEG

8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下

8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 # 8.10 shell 特殊符_cut命令 --- - * 任意个任意字符 - ?任意一个字符 -  井号#注释字符  写命令的时候前面加一个#,那么这条命令就不生效,包括shell脚本里面也是,前面加个#表示这一行不生效,可以加一些注释说明的文字 ``` <[email protected] ~># #ls a.txt <[email

shell下的常用命令

1.help  显示所有内置命令的列表,或某一个内置命令的用法 #help //查看所有内置命令 #help 内置命令 //查看内置命令使用方法 #help -s 内置命令 //显示内置命令的语法格式,非常好用哦! [[email protected] var]# help -s cd cd: cd [-L|-P] [dir] 2.echo 用来显示一行文字,默认会自动换行 [[email protected] ~]# echo www www -e 让字符串中的特殊字符起作用.例如: [[em

如何在shell下切换用户执行命令?

su - dev -c "ls" "su -"切换用户,并且当前目录页切换到相应用户的根目录. "dev"是用户名 "-c"后面接需要执行的shell command 如何在shell下切换用户执行命令?

shell中的eval命令

在shell的学习中,我们会遇到这两种符号:反引号(` `)和$(),那么它们之间有什么区别和联系呢? 我们都知道在bash中,反引号和$()都是用来做命令替换的,命令替换就是用来重组命令行,先完成引号里面的命令,然后将其结果替换出来,再重组成新的命令行.也就是在执行一条命令时,会现将其中的` `,或者是$()中的语句当做命令执行一遍,再将结果加入到原命令中重新执行,例如: 从上面我们可以看到,当我们echo反引号里面的ls命令时,和我们直接执行ls命令是一样的,也就正应里我们前面说的,也就是在

shell之命令代换,将当前路径存放在变量中,然后使用变量

重要的 命令代换`` 反引号 shell先执行该命令,然后将命令的结果存放在 变量中 例如 var=`pwd` echo $var 也可以用其$()替换 var=$(date) echo $var 删除该变量 unset 加变量名 原文地址:https://www.cnblogs.com/xiaokang01/p/9656744.html

理解shell的eval命令

看以下两条命令:[[email protected] /sys]$ a="ls";b="\$a";c="$b";"$c"Hey! No command '$a' found, did you mean 'ia'? [[email protected] /sys]$ a="ls";b="\$a";c="$b";eval "$c"block bus c