Bash脚本中括号和反引号的使用

目录
  • 示例
  • 讨论
  • 总结

在 Bash 脚本中,我们经常需要引用变量或者命令的执行结果来作为文件的名字或者日志的输出,在脚本或者 Shell 中我们可以使用反引号 或者括号 () 来获取到变量的内容

示例

示例 1
获取日期的输出

echo `date`
# output
2021年 01月 05日 星期二 15:21:23 CST
echo $(date)
# output
2021年 01月 05日 星期二 15:21:32 CST

通过使用反引号或者括号我们可以将命令的输出做为脚本中的内容输入,同样可以使用命令的参数来格式化输出

示例 2

获取 年-月-日 格式的日期

echo `date +%F`
# output
2021-01-05
echo $(date +%F)
# output
2021-01-05

讨论

在 Bash 中反引号和括号代表命令输入,所以在脚本中我们只能使用反引号和括号来获取命令的执行和输出结果,而不能使用脚本中声明的变量。而使用 $ 和 ${} 可以获取脚本中声明的变量而不能获取命令的输入

#!/usr/bin/bash

variable=name

# use `` to output variable
echo `variable`

# use $ to output variable
echo $variable

# use $() to output variable
echo $(variable)

# use ${} to output variable
echo ${variable}

执行的结果报错

▶ ./test

./test:行6: variable: 未找到命令

name

./test:行12: variable: 未找到命令

name

总结

1).(点)与source命令一样,从文件中读取并执行命令,无论该文件是否都有可执行权限都能够正确的执行。且是在当前shell下执行,而不是产生一个子shell来执行(我们通常使用“./filename.sh”去执行一个文件是在当前shell下产生一个子shell去执行的)

2): 该命令什么都不做,但执行后会返回一个正确的退出代码,即exit 0,类似于pass

3)() 将多个命令组合在一起执行,相当于一个命令组。

4){}  和()类似,也是将多个命令组合在一起。它们之间的区别是,()是在产生的子shell下执行,而{}是在当前的shell下执行。

5)[] 与test命令一样,用于比较值以及检查文件类型

6)[[]]可以说是[]的“增强版”,它能够将多个test命令支持的测试组合起来

7)(())专门来做数值运算,如果表达式求值为 0,则设置退出状态为 1;如果求值为非 0 值,则设置为 0。

到此这篇关于Bash脚本中括号和反引号的使用的文章就介绍到这了,更多相关Bash 括号和反引号内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Bash中尖括号的更多使用方法

    前言 在这篇文章,我们继续来深入探讨尖括号的更多其它用法. 在上一篇文章当中,我们介绍了尖括号(<>)以及它们的一些用法.在这篇文章,我们继续来深入探讨尖括号的更多其它用法. 通过使用 <,可以实现"欺骗"的效果,让其它命令认为某个命令的输出是一个文件. 例如,在进行备份文件的时候不确定备份是否完整,就需要去确认某个目录是否已经包含从原目录中复制过去的所有文件.你可以试一下这样操作: diff <(ls /original/dir/) <(ls /back

  • 深入理解Bash中的尖括号(适合初学者)

    前言 Bash 内置了很多诸如 ls.cd.mv 这样的重要的命令,也有很多诸如 grep.awk.sed 这些有用的工具.但除此之外,其实 Bash 中还有很多可以起到胶水作用的标点符号,例如点号(.).逗号(,).括号(<>).引号(")之类.下面我们就来看一下可以用来进行数据转换和转移的尖括号(<>). 转移数据 如果你对其它编程语言有所了解,你会知道尖括号 < 和 > 一般是作为逻辑运算符,用来比较两个值之间的大小关系.如果你还编写 HTML,尖括号作

  • Bash脚本中括号和反引号的使用

    目录 示例 讨论 总结 在 Bash 脚本中,我们经常需要引用变量或者命令的执行结果来作为文件的名字或者日志的输出,在脚本或者 Shell 中我们可以使用反引号 或者括号 () 来获取到变量的内容 示例 示例 1 获取日期的输出 echo `date` # output 2021年 01月 05日 星期二 15:21:23 CST echo $(date) # output 2021年 01月 05日 星期二 15:21:32 CST 通过使用反引号或者括号我们可以将命令的输出做为脚本中的内容输

  • PowerShell脚本反引号用法实例:随时随地给代码换行

    为了增强可读性,大家都喜欢将很长的本来可以一行写完的脚本分割成多行. 复制代码 代码如下: Get-Service | Where-Object { $_.Status -eq 'Running' }   Get-Service | Where-Object { $_.Status -eq 'Running' } 在管道符号结束以后,我们可以直接换行.有时遇到花括号时,也可以非常安全的换行: 复制代码 代码如下: Get-Service |   Where-Object { $_.Status

  • php反引号与短标签脚本示例

    <?php error_reporting(0); highlight_file(__FILE__); function check($input){ if(preg_match("/'| |_|php|;|~|\\^|\\+|eval|{|}/i",$input)){ // if(preg_match("/'| |_|=|php/",$input)){ die('hacker!!!'); }else{ return $input; } } function

  • 如何编写健壮的Bash脚本(经验分享)

    shell脚本在运行异常时会受到非常大的影响. 本文介绍一些让bash脚本变得健壮的技术. 使用set -u 因为没有对变量初始化而使脚本崩溃过多少次?对于我来说,很多次.chroot=$1...rm -rf $chroot/usr/share/doc如果上面的代码没有给参数就运行,不会仅仅删除掉chroot中的文档,而是将系统的所有文档都删除.那应该做些什么呢?好在bash提供了set -u,当使用未初始化的变量时,让bash自动退出. 也可以使用可读性更强一点的set -o nounset.

  • 在Bash脚本中创建和使用数组方法总结

    在Bash中定义一个数组 有两种方法可以在bash脚本中创建新数组.第一个是使用declare命令来定义一个Array.此命令将定义名为test_array的关联数组. $ declare -a test_array 还可以通过分配元素来创建数组. $ test_array=(apple orange lemon) 访问数组元素 与其他编程语言类似,bash数组元素可以使用索引号从0开始,然后从1.2.3-n开始访问.这也适用于索引号为数字的关联数组. $ echo ${test_array[0

  • 区分shell中的 反引号、$()和${}

    1.反引号与$()用于命令替换 反引号和$()的作用相同,用于命令替换(command substitution),即完成引用的命令的执行,将其结果替换出来,与变量替换差不多.比如: echo `date '--date=1 hour ago' +%Y-%m-%d-%H` #或者 echo $(date '--date=1 hour ago' +%Y-%m-%d-%H) 输出结果是相同的: 2019-02-02-09. 在编写Shell脚本时建议使用$(),原因主要有: (1)反引号与单引号外形

  • Bash脚本内置的调试方法技巧

    用 Bash 写的脚本也可以进行调试,和 Python,Perl 等解释型语言一样.新建一个名为 servinfo 的脚本并增加可执行权限: 复制代码 代码如下: $ vi servinfo #!/bin/bash echo "Hostname: $(hostname)" echo "Date: $(date)" echo "Kernel: $(uname -mrs)" $ chmod +x servinfo 用 bash -x 来调试上述脚本,

  • linux shell中单引号、双引号、反引号、反斜杠的区别

    1. 单引号 ( '' ) # grep Susan phonebook Susan Goldberg 403-212-4921 Susan Topple 212-234-2343 如果我们想查找的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep会把Goldberg和phonebook当作需要搜索的文件 # grep 'Susan Gold' phonebook Susan Goldberg 403-212-4921 当shel

  • python 捕获 shell/bash 脚本的输出结果实例

    #!/usr/bin/python ## get subprocess module import subprocess   ## call date command ## p = subprocess.Popen("date", stdout=subprocess.PIPE, shell=True)   ## Talk with date command i.e. read data from stdout and stderr. Store this info in tuple #

  • Linux 在Bash脚本中怎么关闭文件描述符的实例

    Linux 在Bash脚本中怎么关闭文件描述符的实例 在写一个Bash脚本的时候碰到一个问题,这个脚本是用来启动一个程序B的,而这个脚本又被另一个程序A调用,结果发现新启动的B进程中有很多A进 程打开的文件描述符(如Socket).因此决定在脚本中将它们关闭,因为为了简单起见,我在A程序中使用了system()来启动该脚本. 增加了关闭文 件描述符的脚本如下: #!/bin/sh cd $(dirname "$0") || exit 1 exec 3>&- exec 4&

随机推荐