shell脚本比较
这两个没有可比性。
shell脚本只能和python的自动化相关做个比较,它的针对性强一些。
‘贰’ Shell脚本 比较两个字段并提取对应的字段值
稍微改一下就行了。我这里没有运行环境,没能测试,你试一下,应该可以了。
#!/usr/bin/ksh
awk 'BEGIN{
FS="|"
OFS="|"
}{
if(FILENAME =="file1.txt")
{
arm[$1]=$2
}
else
{
print $2"|"arm[$1]
}
}' file1.txt file2.unl
‘叁’ linux shell 如何比较两个整数的大小
linux shell比较两个整数的大小可以采用以下的代码:
#!/bin/sh
max=9
min=8
if [ $max -gt $min ]
then
echo 1
else
echo 0
fi
数字的比较:
-eq 相等(equal)
-ne 不等(not equal)
-gt 大于(greater than)
-lt 小于(less than)
-ge 大于等于 (greater than or equal)
-le 小于等于 (less than or equal)
字符串的比较:
[ $str1 = $str2 ] 等于
[ $str1 != $str2 ] 不等于
[ -z $str ]空字符串返回true
[ -n $str ] 或者 [ $str ] 非空字符串返回true
(3)shell脚本比较扩展阅读:
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
shell命令
命令行c
用户登录到Linux系统时,可以看到一个shell提示符,标识了命令行的开始。用户可以在提示符后面输入任何命令及参数。例如:
$ date
二 11 23 01:34:58 CST 1999
$
用户登录时,实际进入了shell,它遵循一定的语法将输入的命令加以解释并传给系统。命令行中输入的第一个字必须是一个命令的名字,第二个字是命令的选项或参数,命令行中的每个字必须由空格或TAB隔开,格式如下:
$ Command Option Arguments
‘肆’ Shell 脚本 比较数字大小
你的写下正确的,以下的也行
if [[ $DEV_SIZE -ge ${EXT_LIMIT[0]} && $DEV_SIZE -le ${EXT_LIMIT[1]} ]];
if [ $DEV_SIZE -ge ${EXT_LIMIT[0]} -a $DEV_SIZE -le ${EXT_LIMIT[1]} ];
如果使用[ ]或者[[ ]]进行整数测试的,里面的比较运算符要使用-eq或-le或-ge等符号,在((里面才可以用>=和<=比较运算,而且[[ 里面逻辑运算用&&和||, [ 里面逻辑运算用-a和-o,((也可以用&&和||
‘伍’ Linux下shell脚本中怎么比较两个数字
[
1
-gt
0
]
测试1是否大于0,-gt表示大于,-lt测试小于,-eq比较两个数字是否相等
‘陆’ 用shell脚本实现两个文件比较
[root@localhostxly]#lla.txtb.txt
-rw-r--r--1rootroot28Jul1315:00a.txt
-rw-r--r--1rootroot30Jul1315:00b.txt
[root@localhostxly]#cata.txt
hello
123
thisisa.txt
456
[root@localhostxly]#catb.txt
hello!
123
thisisb.txt
4567
[root@localhostxly]#diffa.txtb.txt
1c1
<hello
---
>hello!
3,4c3,4
<thisisa.txt
<456
---
>thisisb.txt
>4567
1c1就是指2个文件第一行不一样
<指的是a.txt
>指的是b.txt
‘柒’ 不区分大小写如何比较shell脚本中的字符串
方法一:
你可以将两个字符串统统转成大写(或小写), 再比较
#!/bin/bash
xxx= "Temp "
yyy= "temp "
x_tmp=$(echo $xxx | tr [a-z] [A-Z])
y_tmp=$(echo $yyy | tr [a-z] [A-Z])
if [ "$x_tmp " = "$y_tmp " ];then
echo "PASS "
else
echo "FAIL "
fi
优点:通用
方法二:
用expr的话,得这样:
xxx=Temp
if [ `expr match $xxx "[T|t][E|e][M|m][P|p]$ "` -ne 0 ]
then
echo "PASS "
else
echo "FAIL "
fi
优点:高效,但是限制为特定字符序列
‘捌’ shell脚本,一行一行比较两个文本文件。 shell脚本,对一行一行读取文本文件得到的那一行数据进行字符串
没明白你的意思,就写了一个判断两个文件对应行是不是相同。在线的话就追问我。
line=`cat
file1|wc
-l`
for
((i=1;i<=$line;i++));do
file1=`awk
'NR="'$i'"{print
$0}'`
file1
file2=`awk
'NR="'$i'"{print
$0}'`
file2
if
[
$file1
==
$file2
];then
echo
line
$i
looks
same!
else
echo
line
$i
looks
different!
fi
done
‘玖’ perl 、shell、python三种脚本语言那种好学、易用
perl、shell、python三种脚本语言的区别:
1、适用不同:shell是操作linux的基本,是必须学的。学shell就是学linux命令。perl有强大的正则表达式支持,对于文本处理非常强悍,玩linux不得不学。python作用一种面向对象的,能作为linux脚本的语言,学好之后能帮你很好地完成工作。
2、特点不同:Perl是一种能完成任务的语言。从一开始,Perl就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。它可以很容易操作数字,文本,文件和目录,计算机和网络,特别是程序的语言。
这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西。而且它还应该很容易能把这些你感兴趣的东西交给其它程序做特殊的处理。当然,这种语言还应该很容易在任何现代的操作系统上可以移植地编译和运行。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shellscript(非交互)方式执行。
shellscript是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shellscript是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的command.com。
它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourneshell(sh)和Cshell(csh)。
Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格,Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
3、优点不同:perl,用作文本处理比较好,可以作为系统的辅助工具。shell,用作系统维护、操作等方面。python,功能强大,模块多、跨平台能力好,完全面向对象,尤其适用做大型脚本程序的开发和快速开发。
(9)shell脚本比较扩展阅读:
erl比shell+sed+awk更强大,但学习两者并不冲突,通常是学习shell做为脚本编程的入门基础。而Python在应用领域则与前两者有很大的差别,无太大的可比性。面向不同的任务,可以只需用到其中的一种,也可能三种都要用到,所以究竟该学谁不学谁,需要由面对的任务来决定。
总之,shell是基础,其他是进阶辅助。
Shell脚本通常都是以.sh为后缀名的,这个并不是说不带.sh这个脚本就不能执行,只是大家的一个习惯而已。所以,以后你发现了.sh为后缀的文件那么它一定会是一个shell脚本了。
test.sh中第一行一定是“#!/bin/bash”它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行。’#’表示注释。后面跟一些该脚本的相关注释内容以及作者和创建日期或者版本等等。
‘拾’ shell脚本两个日期值比较
这种标准格式的时期应该是无法比较的,你应该给这个时间转化为linux的绝对时间然后比较大小,给你share一个我之前写的一个计算一个命令执行时间的的脚本,你一看就明白了。
#########################
BEGIN=`date +"%Y-%m-%d %H:%M:%S"`
bkup_system|tee -a bkup_time.log
END=`date +"%Y-%m-%d %H:%M:%S"`
print $BEGIN begin back up|tee -a bkup_time.log
print $END end buck up|tee -a bkup_time.log
#时间转化
Sys_data_begin=`date -d "$BEGIN" +%s`
Sys_data_end=`date -d "$END" +%s`
#计算间隔,可以根据间隔的正负来比较你时间的大小
INTER=`expr $Sys_data_end - $Sys_data_begin`
echo Total time do back up is $INTER s|tee -a bkup_time.log
########################