[转帖]shell命令替换~date用法~如果被替换命令的输出内容包括多行或有多个连续的空白符,输出变量时应该将变量用双引号包围

shell,命令,替换,date,用法,如果,输出,内容,包括,多行,或有,多个,连续,空白符,变量,应该,双引号,包围 · 浏览次数 : 0

小编点评

**Shell 命令替换** **方法 1:反引号 ``** ```bash variable=`commands` ``` **方法 2:`$()` 运算符** ```bash variable=$(commands) ``` **使用方法:** 1. 将要执行的命令放入 `commands` 中。 2. 使用 `=` 或 `=$( )` 的符号将 `commands` 的输出赋值给 `variable`。 3. 选项: - ``:使用单引号引用的字符串。 - `$()`:使用双引号引用的字符串。 **注意:** - `$()` 仅在 Bash Shell 中有效。 - `` 和 `$()` 运算符支持嵌套。 - 在输出变量时,使用双引号包围变量值。

正文

https://www.cnblogs.com/mianbaoshu/p/12069458.html

 

Shell 命令替换是命令的输出结果赋值给某个变量。比如,将使用ls命令查看到的某个目录中的内容保存到某个变量中,这就需要使用命令替换。

Shell 中有两种方式可以完成命令替换,一种是反引号` `,一种是$(),使用方法如下:
  variable=`commands`
  variable=$(commands)

其中,variable 是变量名,commands 是要执行的命令。commands 可以只有一个命令,也可以有多个命令,多个命令之间以分号;分隔。

脚本
结果
知识点
#!/bin/bash
begin_time=`date` #开始时间,使用``替换
sleep 20s #休眠20秒
finish_time=$(date) #结束时间,使用$()替换
echo "Begin time: $begin_time"
echo "Finish time: $finish_time"
运行脚本,20 秒后可以看到输出结果:
Begin time: 2019年 04月 19日 星期五 09:59:58 CST
Finish time: 2019年 04月 19日 星期五 10:00:18 CST
date 命令用来获得当前的系统时间
复制代码
#!/bin/bash
begin_time=`date +%s` #开始时间,使用``替换
sleep 20s #休眠20秒
finish_time=$(date +%s) #结束时间,使用$()替换
run_time=$((finish_time - begin_time)) #时间差
echo "begin time: $begin_time"
echo "finish time: $finish_time"
echo "run time: ${run_time}s"
复制代码
运行脚本,20 秒后可以看到输出结果:
begin time: 1555639864
finish time: 1555639884
run time: 20s

1.使用 date 命令的%s格式控制符可以得到当前的 UNIX 时间戳

UNIX 时间戳是指从 1970 年 1 月 1 日 00:00:00 到目前为止的秒数。

2.使用date +%s时注意date与+之间有空格,+与%s之间没有空格

3.第 5 行代码中的(( ))是 Shell 数学计算命令,和 C++、C#、Java 等编程语言不同,

在 Shell 中进行数据计算不那么方便,必须使用专门的数学计算命令

#!/bin/bash
LS=$(ls -l)
echo '不用双引号'$LS
echo '------------------------'
echo '使用双引号'"$LS"

为了防止出现格式混乱的情况,建议在输出变量时加上双引号。

不用双引号总用量 4 -rw-rw-r-- 1 roaddb roaddb 14 8月 26 04:29 aaa.txt -rw-rw-r-- 1 roaddb roaddb 26 8月 20 09:05 a.sh

------------------------

使用双引号总用量 4

-rw-rw-r-- 1 roaddb roaddb   14 8月  26 04:29 aaa.txt

-rw-rw-r-- 1 roaddb roaddb   26 8月  20 09:05 a.sh

如果被替换命令的输出内容包括多行(也即有换行符),或含有多个连续的空白符

那么在输出变量时应该将变量用双引号包围,否则系统会使用默认的空白符来填充,

这会导致换行无效,以及连续的空白符被压缩成一个

再谈反引号和 $()

原则上讲,上面提到的两种变量替换的形式是等价的,可以随意使用;但是,反引号毕竟看起来像单引号,有时候会对查看代码造成困扰,而使用 $() 就相对清晰,能有效避免这种混乱。而且有些情况必须使用 $(),$() 支持嵌套,反引号不行。

$()支持嵌套,举栗

Fir_File_Lines=$(wc -l $(ls | sed -n '1p'))
echo "$Fir_File_Lines"
结果是:36 anaconda-ks.cfg

要注意的是,$() 仅在 Bash Shell 中有效,而反引号可在多种 Shell 中使用

与[转帖]shell命令替换~date用法~如果被替换命令的输出内容包括多行或有多个连续的空白符,输出变量时应该将变量用双引号包围相似的内容:

[转帖]shell命令替换~date用法~如果被替换命令的输出内容包括多行或有多个连续的空白符,输出变量时应该将变量用双引号包围

https://www.cnblogs.com/mianbaoshu/p/12069458.html Shell 命令替换是指将命令的输出结果赋值给某个变量。比如,将使用ls命令查看到的某个目录中的内容保存到某个变量中,这就需要使用命令替换。 Shell 中有两种方式可以完成命令替换,一种是反引号`

[转帖]linux-shell-命令替换和变量替换

https://www.muzhuangnet.com/show/84054.html 本文摘自PHP中文网,作者步履不停,侵删。 命令替换$() `` 1 Shell 命令替换是指将命令的输出结果赋值给某个变量 Shell 中有两种方式可以完成命令替换,一种是反引号 ,一种是$(),使用方法如下:

[转帖]Shell编程之正则表达式与文本处理器(grep、sort、uniq、tr、cut)

目录 正则表达式概念正则表达式的作用元字符grep命令在文本中查找指定的字符串sort命令排序uniq命令快捷去重tr命令替换、压缩和删除cut命令快速裁剪命令expr substr 截取方法cut截取方法 split命令文件拆分paste命令文件合并eval变量扫描器位置锚定分组或其他扩展正则表达

[转帖]Shell三剑客之sed

目录 Shell三剑客sed工具sed 流编辑器的工作过程sed命令格式与选项操作符sed命令的常用选项sed命令的打印功能默认打印方式sed命令的寻址打印文本模式过滤行内容 sed的删除操作通过行号进行删除匹配字符串内容删除字符串搭配正则进行删除删除空行的三种方法 sed命令替换符进行大小写的替换

[转帖]Shell编程之免交互

目录 交互的概念与Linux中的运用Here Document 免交互tee命令重定向输出加标准输出支持变量替换多行注释Expect实例操作免交互预设值修改用户密码创建用户并设置密码实现 ssh 自动登录 交互的概念与Linux中的运用 交互:当计算机播放某多媒体程序的时候,编程人员可以发出指令控制

[转帖]Linux中EOF和Expect命令详解

一、EOF说明 Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序。 回顾一下< <的用法。当shell看到< <的时候,它就会知道下一个词是一个分界符。在

[转帖]Shell 中的 expect 命令

https://www.cnblogs.com/chenjo/p/12892894.html 目录 expect 介绍 expect 安装 expect 语法 自动拷贝文件到远程主机 示例一 示例二 示例三 示例四 expect 介绍 借助 expect 处理交互的命令,可以将交互过程如 ssh 登

[转帖]Shell mount的命令

1. 简介 挂载:Linux中所有的可读取设备(硬盘、光盘、U盘、软盘、移动硬盘等)都必须挂载之后才可以使用,系统硬盘分区是Linux系统开机自动挂载的,所有的可读取设备都有一个设备文件名,挂载指的就是将设备文件名和挂载点(任意一个空目录)连接起来。 2. 查询挂载和自动挂载 mount 或 mou

[转帖]shell脚本之awk命令——按列求平均值、最大值、最小值

文章目录 写在前面awk求平均值awk求最大值awk求最小值awk求极值、均值的实际应用 写在前面 awk命令求极值和均值需要熟悉该命令的基本用法,如果你不熟悉该命令,请先阅读shell脚本之awk命令——分隔符介绍一文。本篇博文带你熟悉求平均值、最大值、最小值的方法,并以实际的应用带你进一步掌握a

[转帖]Shell编程之函数

目录 Shell函数使用Shell函数的优点 Shell 函数定义使用原则函数传参函数变量的作用范围 函数递归阶乘递归目录函数库 Shell函数 将命令序列按格式写在一起可方便重复使用命令序列Shell函数定义 调用函数的方法 使用Shell函数的优点 使用函数可以避免代码重复使用函数可以将大的工程