linux shell将变量拼接到命令中

 更新时间:2023年05月06日 09:28:22   作者:慢点走  
本文主要介绍了linux shell将变量拼接到命令中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

有这个一个场景:需要写多个定时任务提交到yarn,这些任务都是同一时间启动的。原先的做法是,所有的启动命令都使用linux的crontab,但是因为任务过多,所以crontab里的内容越来越多,不好管理,改时间也不方便,所以这里写脚本进行管理。

同时为了方便查看任务,每个任务的名字,将当前时间的时分拼接到yarn的任务的name上。

linux拼接字符串

这个就涉及到了linux获取当前时间和拼接字符串的问题了。本人不是主攻这个方向,所以就是边百度边写,获取时间:

time1=$(date  "+%Y_%m_%d-%H_%M")
echo $time1

linux拼接字符串的规则:

#!/bin/bash
name="Shell"
url="http://c.biancheng.net/shell/"
str1=$name$url  #中间不能有空格
str2="$name $url"  #如果被双引号包围,那么中间可以有空格
str3=$name": "$url  #中间可以出现别的字符串
str4="$name: $url"  #这样写也可以
str5="${name}Script: ${url}index.html"  #这个时候需要给变量名加上大括号
echo $str1
echo $str2
echo $str3
echo $str4
echo $str5

运行结果:

Shellhttp://c.biancheng.net/shell/
Shell http://c.biancheng.net/shell/
Shell: http://c.biancheng.net/shell/
Shell: http://c.biancheng.net/shell/
ShellScript: http://c.biancheng.net/shell/index.html

对于第 7 行代码,$name 和 $url 之间之所以不能出现空格,是因为当字符串不被任何一种引号包围时,遇到空格就认为字符串结束了,空格后边的内容会作为其他变量或者命令解析。

命令行里拼接字符串

获取到date了,拼接进命令行就行。

这里先举个其他例子:

name="abc"
touch /home/$name

这样等同于 touch /home/abc。

如果涉及到拼接的字符串前后都还有内容:

name="abc"
touch /home/${name}123

这样等同于 touch /home/abc123。

我碰到的问题

按理说万事俱备,只欠东风。我将命令写成了:

 time1=$(date  "+%Y_%m_%d-%H_%M")
 ... "name":"abc${time1}" ...

但是执行以后去yarn的ui去看,任务名字不是我想像的前缀加时间,而是abc${time1},非常郁闷,想不通,开始找哪里出问题了。

最后发现,问题出在了引号上。

name那条语句,是被单引号括起来的,shell脚本中,在单引号里,变量是不被替换的,问题出在这里了。那么如何解决呢?

 time1=$(date  "+%Y_%m_%d-%H_%M")
' ... "name":"abc'${time1}'" ...'

把变量排除在单引号之外即可。

单引号的一些注意的地方

在单引号中的任何字符都会原样输出,单引号字符串中的变量是无效的。

#!/bin/bash

name="abc"
echo '123 $name' 
echo '在单引号中使用\"$name\"也是没有用的哦'

输出:

123 $name

在单引号中使用\"$name\"也是没有用的哦

顺便说一下,shell脚本中字符串可以使用双引号、单引号、不使用引号来定义。在不使用引号的情况下字符串中间不可以有空格。

#!/bin/bash
a="aaa";
b='bbb';
c=ccc
echo $a
echo $b
echo $c

执行脚本输出:

aaa
bbb
ccc

到此这篇关于linux shell将变量拼接到命令中的文章就介绍到这了,更多相关linux shell变量拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux shell在while中用read从键盘输入的实现

    linux shell在while中用read从键盘输入的实现

    下面小编就为大家带来一篇linux shell在while中用read从键盘输入的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 神奇的shell命令行输入与输出功能介绍

    神奇的shell命令行输入与输出功能介绍

    命令行还是比较常用的,于是我研究了一下shell命令行,在这里拿出来和大家分享一下,希望对大家有用
    2013-02-02
  • shell向文件中添加新内容的实现方法

    shell向文件中添加新内容的实现方法

    Shell脚本是一种为shell编写的脚本程序,下面这篇文章主要给大家介绍了关于shell向文件中添加新内容的实现方法,需要的朋友可以参考下
    2023-06-06
  • linux虚拟机上安装配置redis3.0.7

    linux虚拟机上安装配置redis3.0.7

    本篇内容给大家介绍在linux虚拟机上安装redis3.0.7这个版本的过程以及相关的配置问题。
    2017-11-11
  • Linux命令sed(流编辑器)的用法详解

    Linux命令sed(流编辑器)的用法详解

    sed编辑器要比交互式编辑器快得多,可以快速完成对数据的自动修改,比如:替换,这篇文章主要介绍了Linux命令sed(流编辑器)使用/实例,需要的朋友可以参考下
    2022-09-09
  • shell语言date的用法实例

    shell语言date的用法实例

    这篇文章主要介绍了shell语言关于date的一些用法,帮助大家更好的理解和学习shell语言,感兴趣的朋友可以了解下
    2020-11-11
  • Centos下查看网卡的实时流量命令

    Centos下查看网卡的实时流量命令

    本文介绍了linux下查看网卡流量的六种方法,linux系统中使用nload、iftop、iostat等工具查看网卡流量,这里我们先来详细讲解下 iptraf 方法,需要的朋友参考下。
    2015-05-05
  • Linux下使用nextcloud搭建个人网盘代码实例

    Linux下使用nextcloud搭建个人网盘代码实例

    这篇文章主要介绍了Linux下使用nextcloud搭建个人网盘代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • shell结构化命令if-then-else语句

    shell结构化命令if-then-else语句

    在Shell脚本编程中,if-then-else语句提供了基于条件执行不同命令的能力,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • Linux中scp命令获取远程文件的方法

    Linux中scp命令获取远程文件的方法

    scp用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp。接下来通过本文给大家介绍Linux中scp命令获取远程文件的方法,一起看看吧
    2016-08-08

最新评论