linux 常用shell脚本语句

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

代码如下:

#!/bin/sh 
#定义一个变量datetime,并赋值 datetime=$1 if [ ! -n "$datetime" ] ;then echo "你没有输入任何文字!!!" else echo "你输入的文字是 $datetime " fi

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

  

 1 #!/bin/sh 
 5 # 1. Time 
 6 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 7 #    1.1 get the time
 8       path=/work/forecast/plot
 9       system_time_utc=`date -d"1 day ago" +"%Y%m%d"`
10 #     system_time_utc=`date -u +%Y%m%d%H`
11 #     data_year=`date -u +%Y`
12 #     data_month=`date -u +%m`
13 #     data_day=`date -u +%d`
14 #获取系统时间
15      echo $system_time_utc 
16 #定义公共路径
17      echo $path1
18      if [ ! -d "$path " ]; then 
19       echo "$path 不存在"
20      else 
21       echo "$path 已经存在"
22      fi
23 ######通过逗号为分隔符,拆分为数组格式数据进行循环操作。
24      a="asd,mnc,cvb"
25      OLD_IFS="$IFS" 
26      IFS="," 
27      arr=($a) 
28      IFS="$OLD_IFS" 
#############第一次for循环###################### 29 for s in ${arr[@]} 30 31 do 32 b="qwe1,qwe2,qwe3,qwe4,qwe5,qwe6" 33 OLD_IFS="$IFS" 34 IFS="," 35 arrb=($b)
###########第二次for循环
36 for ss in ${arrb[@]} 37 do 38 hourly=$path/$s/$system_time_utc"06"/hourly 39 daily=$path/$s/$system_time_utc"06"/daily 40 file_hour=$s"_"$ss"_hourly_"$system_time_utc.tar 41 file_day=$s"_"$ss"_daily_"$system_time_utc.tar 42 if [ ! -f "$hourly/$file_hour " ]; then 43 mkdir $hourly 44 wget --ftp-user=用户名 --ftp-password=密码 ftp://ip地址//文件夹//$file_hour -P $hourly 45 cd $hourly 46 tar -xvf $file_hour ##解压.tar文件 47 else 48 echo " $hourly 已经存在" 49 fi 50 if [ ! -d "$daily/$file_day " ]; then 51 mkdir $daily
####################### 通过wget的方式从ftp上下载文件 ################
52 wget --ftp-user=用户名 --ftp-password=密码 ftp://ip地址//文件夹//$file_day -P $daily 53 cd $daily 54 tar -xvf $file_day 55 else 56 echo " $daily 已经存在" 57 fi 58 59 done 60 done


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

 

 1  linux  文件比较运算符
 2 -e filename     如果 filename存在,则为真     [ -e /var/log/syslog ]
 3 -d filename     如果 filename为目录,则为真     [ -d /tmp/mydir ]
 4 -f filename     如果 filename为常规文件,则为真     [ -f /usr/bin/grep ]
 5 -L filename     如果 filename为符号链接,则为真     [ -L /usr/bin/grep ]
 6 -r filename     如果 filename可读,则为真     [ -r /var/log/syslog ]
 7 -w filename     如果 filename可写,则为真     [ -w /var/mytmp.txt ]
 8 -x filename     如果 filename可执行,则为真     [ -L /usr/bin/grep ]
 9 filename1-nt filename2     如果 filename1比 filename2新,则为真     [ /tmp/install/etc/services -nt /etc/services ]
10 filename1-ot filename2     如果 filename1比 filename2旧,则为真     [ /boot/bzImage -ot arch/i386/boot/bzImage ]
11 字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
12 -z string     如果 string长度为零,则为真     [ -z "$myvar" ]
13 -n string     如果 string长度非零,则为真     [ -n "$myvar" ]
14 string1= string2     如果 string1与 string2相同,则为真     [ "$myvar" = "one two three" ]
15 string1!= string2     如果 string1与 string2不同,则为真     [ "$myvar" != "one two three" ]
16 算术比较运算符
17 num1-eq num2     等于    [ 3 -eq $mynum ]
18 num1-ne num2     不等于    [ 3 -ne $mynum ]
19 num1-lt num2     小于    [ 3 -lt $mynum ]
20 num1-le num2     小于或等于    [ 3 -le $mynum ]
21 num1-gt num2     大于    [ 3 -gt $mynum ]
22 num1-ge num2     大于或等于    [ 3 -ge $mynum ]

 

posted @ 2017-12-19 10:50  我是传奇cfd  阅读(306)  评论(0编辑  收藏  举报