shell之未找到命令_ 买了否冷的博客-程序员秘密_shell未找到命令

技术标签: shell  

在写shell脚本的时候一直报错未找到命令,脚本如下:

#!/bin/bash
in_date=$1
if [ ! $in_date ]; then
yesterday=`date -d "yesterday" '+%Y%m%d'`
yesterday1=`date -d "yesterday" '+%Y-%m-%d'`
else
yesterday=$in_date
yesterday1=`date -d "$in_date" '+%Y-%m-%d'`
fi

echo $yesterday
echo $yesterday1

time1="$yesterday1 00:00:00"

echo $time1

res=999
if [ $res -le 1000 ]
then
    echo $res
    warn1="警告:" $time1 "抽取数据量小于1000,请核实!"
    echo warn1
fi
echo "警告:" $time1 "抽取" $var"条数据"

只看逻辑不看细节还真的找不到错误,在shell中=号两边没有空格是表示赋值,有空格表示比较。而且中括号也要有空格。if条件中括号里面两边要有空格,由于if条件语句中"warn1=“警告:” t i m e 2 " 抽 取 数 据 量 小 于 1000 , 请 核 实 ! " " 是 赋 值 操 作 , 所 以 time2"抽取数据量小于1000,请核实!""是赋值操作,所以 time2"1000,!"",time2左边有空格是错误的,而"echo “警告:” $time2 “抽取” $var"条数据""不是赋值操作,只是输出字符串,所以不会报错。
正确的shell脚本应该是:

#!/bin/bash
in_date=$1
if [ ! $in_date ]; then
yesterday=`date -d "yesterday" '+%Y%m%d'`
yesterday1=`date -d "yesterday" '+%Y-%m-%d'`
else
yesterday=$in_date
yesterday1=`date -d "$in_date" '+%Y-%m-%d'`
fi

echo $yesterday
echo $yesterday1

time1="$yesterday1 00:00:00"

echo $time1

res=999
if [ $res -le 1000 ]
then
    echo $res
    warn1="警告:"$time1"抽取数据量小于1000,请核实!"
    echo warn1
fi
echo "警告:" $time1 "抽取" $var"条数据"
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40105563/article/details/113523909

智能推荐

Object-C 介绍_子龙哦的博客-程序员秘密_object-c

介绍Object-C 是一个为苹果IOS 和OS X系统编写程序的语言。它能够编译和构建命令行功能、GUI、领域框架的通用语言。他也提供了很多的功能帮助维护复杂的应用。 像C++一样,Object-C也是在C语言的基础上添加了面向对象的特性,但是两种语言完整这个目标,采用了明显不同的基础哲学。Object-C明显更加的偏向动态语言,推迟它的决定到运行时,而不是编译时。这个表现在IOS 和 OS X

STM32入门开发: LWIP网络协议栈移植(网卡采用DM9000)_DS小龙哥的博客-程序员秘密_lwip移植

一、环境介绍MCU: STM32F103ZET6代码开发工具: Keil5TCP/IP协议栈: LWIP网卡: DM9000本篇文章主要讲解如何在STM32F103工程里添加移植LWIP协议,最终完成TCP服务器、TCP客户端的通信测试。 网卡采用的是DM9000,工程代码中,采用STM32的FSMC接口来驱动DM900网卡,DM9000是并口网卡,引脚多,但是速度快,也可以采用其他网卡,SPI协议的、UART协议的等。 比如:W5500。 因为主要是讲LWIP协议栈的移植,所以网卡相关

unity3d CustomEditor插件_hewei+的博客-程序员秘密_customeditor

[CustomEditor(typeof(TestItemC))]public class TestItemEditor : UnityEditor.Editor { int selGridInt = 0; string[] selStrings = {"radio1", "radio2", "radio3", "radio4"}; public override void OnInspectorGUI() { base.OnInspectorGUI.

es6中的模块化_我不是你不是我的博客-程序员秘密_es6模块化

1、模块化说明:模块化是指将一个很大的程序文件,拆分为许多个小的文件,然后将多个小文件组合起来(1)模块化的好处:① 阻止命名冲突; ② 代码复用; ③ 高维护性(2)ES6 模块化语法:① export 命令:用于规定模块的对外接口② import 命令:用于输入其他模块提供的功能(3)export 暴露方式,3种:1、第一种暴露方式:分别暴露 // 1. 分别暴露, m1.js, m1.js export let school = 'gc'; export fun_1671465600

PostgreSQL — PostgreSQL中权限的控制与分配_RachelHwang的博客-程序员秘密_postgres数据库ddl分配权限

1、超级用户PostgreSQL最大权限的用户就是超级用户,这个超级用户可以在数据库中做任意的操作,无任何的限制。当初使化数据库后,自动有会有一个超级用户,通常这个超级用户的名称与初使化数据库时的操作系统用户名相同。建PostgreSQL数据库实例时,一般我们会在操作系统上如果我们在操作系统用户pg001下执行initdb初使化PostgreSQL数据库的,则建出的数据库中有一个名称为pg001的超级用户。使用这个初使的超级用户可以建其它的超级用户或普通用户,所以一个数据库中可以有多个超级用户。2、

python requests库与正则表达式的一次实战_deep__的博客-程序员秘密

在实验吧看到一道编程题  http://ctf5.shiyanbar.com/jia/在三秒钟的时间内,计算出这个大数,而且三秒必须完成获取和提交数据的任务。刚开始写了一个程序:每次把这个字符复制过来,然后再把结果粘回去。后来我发现,手速这个东西,我可能没有。然后想了想能不能使用python的requests库结合正则表达式来做呢?答案是肯定的。由于之前没有接触过requests库,就先看看官方文...

随便推点

ae显示不能动态链接服务器,ae pr如何联动、建立动态链接?_涂姬的博客-程序员秘密

我们都知道ae和pr是两款视频处理软件,一个侧重于后期制作,而另一个是进行视频剪辑处理的。它们各有所长,但是,如果能够两者结合使用的话,肯定能够做出更加完美的视频处理效果。那么,它们是可以联动、建立动态链接的你知道吗?如果你还不知道有这种操作,那么就赶快一起看一看、学一学吧!或许能够对你有所帮助和启发!1、首先,我们打开premiere软件,导入我们需要处理的视频素材,我们把想要链接到ae进行编辑...

Android 9.0 Wifi打开流程_不冬眠的熊的博客-程序员秘密_android 9.0打开并连接wifi

Android 9.0 Wifi开启执行流程代码具体执行流程:WifiManager.java路径:framework/base/wifi/java/android/net/wifi/WifiManager.javaWifiManager.setWifiEnabled()设置WIFI开启。WifiServiceImpl.java路径:/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceI

unreal 顶点法线与 面法线_zsyddl2的博客-程序员秘密_ue5顶点法线原理

    当前revit 建筑模型软件导出的模型对象 three.js的json文件,都是面法线。(暂时是这样的,是否能导出顶点法线,后续确定)。    unreal 显示总是发现不对,要么该光照的没关照,或者直角面,背光处却透光了。开始未给定法线,经过对比分析,应该是法线没对。于是打算加入指定的法线。    1、为什么开始没给定法线?在测试自定义的模型时候,不给定法线,仍然可以显示物体。而且默认情...

python 共享内存 模块_python-多处理中的共享内存_weixin_39552037的博客-程序员秘密

我有三个大名单。 前一个包含位数组(模块位数组0.8.0),其他两个包含整数数组。l1=[bitarray 1, bitarray 2, ... ,bitarray n]l2=[array 1, array 2, ... , array n]l3=[array 1, array 2, ... , array n]这些数据结构占用大量RAM(总计约16GB)。如果我使用以下方法启动12个子流程:mu...

深入了解CPU两大架构ARM与X86_li136237的博客-程序员秘密_以inltelx86或arm两个处理器系列为例,深入讨论计算机组成与体系结构的基本原理,将

重温下CPU是什么 中央处理单元(CPU)主要由运算器、控制器、寄存器三部分组成,从字面意思看运算器就是起着运算的作用,控制器就是负责发出CPU每条指令所需要的信息,寄存器就是保存运算或者指令的一些临时文件,这样可以保证更高的速度。 CPU有着处理指令、执行操作、控制时间、处理数据四大作用,打个比喻来说,CPU就像是我们的大脑,帮我们完成各种各样..._1671465600

《STL源码剖析》学习笔记——第四章:序列式容器 stack和queue_Still_Believe_的博客-程序员秘密___stl_null_tmpl_args

目录1. stack1.1 stack概述1.2 stack 完整定义1.3 以list作为stack的底部容器2. queue2.1 queue概述2.2 queue 完整定义2.3 以list作为queue的底部容器1. stack1.1 stack概述stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口。stack允许新增元素,移除元素、取得最顶端元素,但不允许有遍历行为。由于stack系以底部容器完成其所有工作

推荐文章

热门文章

相关标签