linux脚本语句,linux 常用shell脚本语句

本文介绍了一个简单的Shell脚本,用于每天从固定IP地址下载特定文件。脚本首先获取前一天的日期,然后检查目标目录是否存在,如果不存在则创建。接着,脚本通过循环处理逗号分隔的文件列表,对每个文件执行下载和解压操作。通过wget命令和FTP协议,脚本实现了文件的自动获取。此外,文中还列举了Linux中的文件和字符串比较运算符,以及一些常用的Shell脚本命令。
摘要由CSDN通过智能技术生成

最近老大让写一个shell脚本,每天从一个固定IP中取到相应文件,所以想写一个简单的shell脚本命令,供大家学习交流。先做一个简单的例子,先看效果吧,

f3dc08cb81aa06e130c7b3800c58a2be.png

代码如下:

#!/bin/sh

#定义一个变量datetime,并赋值

datetime=$1

if [ ! -n "$datetime" ] ;then

echo "你没有输入任何文字!!!"

else

echo "你输入的文字是 $datetime "

fi

##注意事项 1、在符号“=”的前后不能有空格,2、"datetime=$1"中$1为系统提供的位置参数,$0代表程序的名称,[$1/$2/...]从1开始为传递的参数。

#!/bin/sh

# . Time

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# 1.1 get the time

path=/work/forecast/plot

system_time_utc=`date -d"1 day ago" +"%Y%m%d"`

# system_time_utc=`date -u +%Y%m%d%H`

# data_year=`date -u +%Y`

# data_month=`date -u +%m`

# data_day=`date -u +%d`

#获取系统时间

echo $system_time_utc

#定义公共路径

echo $path1

if [ ! -d "$path " ]; then

echo "$path 不存在"

else

echo "$path 已经存在"

fi

######通过逗号为分隔符,拆分为数组格式数据进行循环操作。

a="asd,mnc,cvb"

OLD_IFS="$IFS"

IFS=","

arr=($a)

IFS="$OLD_IFS"

#############第一次for循环######################

for s in ${arr[@]}

do

b="qwe1,qwe2,qwe3,qwe4,qwe5,qwe6"

OLD_IFS="$IFS"

IFS=","

arrb=($b)

###########第二次for循环

for ss in ${arrb[@]}

do

hourly=$path/$s/$system_time_utc""/hourly

daily=$path/$s/$system_time_utc""/daily

file_hour=$s"_"$ss"_hourly_"$system_time_utc.tar

file_day=$s"_"$ss"_daily_"$system_time_utc.tar

if [ ! -f "$hourly/$file_hour " ]; then

mkdir $hourly

wget --ftp-user=用户名 --ftp-password=密码 ftp://ip地址//文件夹//$file_hour -P $hourly

cd $hourly

tar -xvf $file_hour ##解压.tar文件

else

echo " $hourly 已经存在"

fi

if [ ! -d "$daily/$file_day " ]; then

mkdir $daily

####################### 通过wget的方式从ftp上下载文件 ################

wget --ftp-user=用户名 --ftp-password=密码 ftp://ip地址//文件夹//$file_day -P $daily

cd $daily

tar -xvf $file_day

else

echo " $daily 已经存在"

fi

done

done

######### 敏感参数随机命名了,大家可以替换自己的参数,wget --ftp-user=用户名 --ftp-password=密码 ftp://ip地址//文件夹 中的用户名密码及ip地址均为ftp的。

1 linux文件比较运算符 -e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]

-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]

-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]

-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]

-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]

-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]

-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]

filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法) -z string 如果 string长度为零,则为真 [ -z "$myvar" ]

-n string 如果 string长度非零,则为真 [ -n "$myvar" ]

string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ]

string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]

算术比较运算符 num1-eq num2 等于 [ -eq $mynum ]

num1-ne num2 不等于 [ -ne $mynum ]

num1-lt num2 小于 [ -lt $mynum ]

num1-le num2 小于或等于 [ -le $mynum ]

num1-gt num2 大于 [ -gt $mynum ]

num1-ge num2 大于或等于 [ -ge $mynum ]

Linux常用Shell脚本珍藏【转载】

我们在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,这里收藏linux运维常用的脚本.如何学好脚本,最关键的 ...

Linux常用shell脚本

在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,如何学好脚本,最关键的是就是大量的练习 和实践. 1.用Sh ...

常用shell脚本命令

常用shell脚本命令 1.显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2.删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' f ...

Linux/Unix shell 脚本中调用SQL,RMAN脚本

Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...

8个DBA最常用的监控Oracle数据库的常用shell脚本

本文介绍了8个常用的监控数据shell脚本.首先回顾了一些DBA常用的Unix命令,以及解释了如何通过Unix Cron来定时执行DBA脚本.网上也有好多类似的文章,但基本上都不能正常运行,花点时间重 ...

详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

使用C#给Linux写Shell脚本(下篇)

在上篇的结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...

从windows到linux的shell脚本编码和格式问题

从windows到linux的shell脚本编码和格式问题   从windows到Linux的shell脚本编码和格式问题 1.异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh s ...

Linux执行shell脚本方式及区别&命令后台运行

Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/

随机推荐

ASP.NET Web API标准的“管道式”设计

ASP.NET Web API的核心框架是一个消息处理管道,这个管道是一组HttpMessageHandler的有序组合.这是一个双工管道,请求消息从一端流入并依次经过所有HttpMessageHan ...

iOS各个版本的新特性介绍

官方汇总 What's News in iOS iOS 9.3 to iOS 10.0 API Differences Objective-C /usr/include Accelerate Audi ...

Awk 实例

AWK 是一种用于处理文本的编程语言工具.AWK 在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法.它的设计思想来源于 SNOBOL4 .sed .Marc Rochki ...

Hadoop的Archive归档命令使用指南

hadoop不适合小文件的存储,小文件本省就占用了很多的metadata,就会造成namenode越来越大.Hadoop Archives的出现视为了缓解大量小文件消耗namenode内存的问题. 采 ...

Linux命令归纳

Linux基本命令 Linux Xshell远程连接 ssh 用户名@id地址 例如: ssh root@192.168.11.53 增加类指令 创建文件夹 mkdir 文件名 mkdir -p 路径 ...

微服务——RestTemplate

GET请求: 第一种:getForEntity: 此方法返回的是ResponseEntity,该对象是Spring对HTTP请求响应的封装. RestTemplate rt = new RestTem ...

20155210 Exp2 后门原理与实践

20155210 Exp2 后门原理与实践 1.Windows获得Linux Shell 在windows下,打开CMD,使用ipconfig指令查看本机IP 如图: 然后使用ncat.exe程序,n ...

POJ 1751 Highways(最小生成树&Prim)题解

思路: 一开始用Kruskal超时了,因为这是一个稠密图,边的数量最惨可能N^2,改用Prim. Prim是这样的,先选一个点(这里选1)作为集合A的起始元素,然后其他点为集合B的元素,我们要做的就是 ...

【laravel5.4】查询构造器对象与模型instance的互相换换

1.查询构造器一般情况下返回对象,但是无法直接使用model类的一些方法,如toJson.toArray等 DB::table 结果转换成 model 类实例[collect 实例] public f ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值