Shell常用操作符总结

时间:2023年03月07日

/

来源:巡风

/

编辑:本站小编

收藏本文

下载本文

下面是小编为大家整理的Shell常用操作符总结,本文共13篇,仅供参考,大家一起来看看吧。本文原稿由网友“巡风”提供。

篇1:Shell常用操作符总结

这篇文章主要介绍了Shell常用操作符总结,本文讲解了算术操作符、关系操作符、测试操作符等内容,需要的朋友可以参考下

一、算术操作

代码如下:

+ - *   /   %

二、关系操作

代码如下:

< >   >=     <=   ==   !=   && ||

三、测试操作

测试命令 : test   [ ]     [[ ]]   (( ))

1、测试文件状态

代码如下:

-d 目录

-b 块设备

-s 文件长度 >0、非空

-f 正规文件

-w 可写

-L 符号连接

-u 文件有 suid 位设置

-r 可读

-x 可执行

如: [ -w tmp.txt ]       测试文件tmp.txt是否可写

2、字符串测试

代码如下:

= 两个字符串相等

!= 两个字符串不相等

-z 空串

-n 非空串

$ VAR1=‘abc‘

$ VAR2=‘123‘

$ [ “$VAR1” = “$VAR2” ]

$ echo $?

1

3、测试数值

代码如下:

-eq 等于

-ne 不等于

-gt 大于

-lt 小于

-ge 大于等于

-le 小于等于

4. 拓展测试符号 [[ ]] (( ))

代码如下:

# [[ 2 >10 ]] # 结果错误

# echo $?

0

# (( 2 >10 )) 结果正确

# echo $?

0

# [[ “aa” = “aa” ]]

# echo $?

0

# (( “aa” = “aa” )) #结果错误

# echo $?

1

四、结论

比较数字,使用(( ))

其他测试使用 [[ ]]

包含数字比较的混合测试,使用标准语法

篇2:UNION和UNIONALL操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集,

注意:

1.UNION 内部的 SELECT 语句必须拥有相同数量的列

2.列也必须拥有相似的数据类型

3.每条 SELECT 语句中的列的顺序必须相同

UNION 语法

SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

UNION ALL 语法

SELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2

另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

篇3:UNION和UNIONALL操作符

实例

列出所有在中国和美国的不同的雇员名:

SELECT E_Name FROM Employees_ChinaUNIONSELECT E_Name FROM Employees_USA

结果

E_NameZhang, HuaWang, WeiCarter, ThomasYang, MingAdams, JohnBush, GeorgeGates, Bill

注释:这个命令无法列出在中国和美国的所有雇员,

在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。

篇4:UNION和UNIONALL操作符

UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。

实例:

列出在中国和美国的所有的雇员:

SELECT E_Name FROM Employees_ChinaUNION ALLSELECT E_Name FROM Employees_USA

结果

E_NameZhang, HuaWang, WeiCarter, ThomasYang, MingAdams, JohnBush, GeorgeCarter, ThomasGates, Bill

篇5:Shell中的for循环总结

这篇文章主要介绍了Shell中的for循环总结,本文讲解了shell中for循环用法、shell下for循环的几种方法等内容,需要的朋友可以参考下

关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿...

代码如下:

for((i=1;i<=10;i++));do echo $(expr $i \\* 4);done

在shell中常用的是 for i in $(seq 10)

代码如下:

for i in `ls`

for i in ${arr[@]}

for i in $* ; do

for File in /proc/sys/net/ipv4/confaccept_redirects:‘

for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do

echo $File

done

echo “直接指定循环内容”

for i in f1 f2 f3 ;do

echo $i

done

echo

echo “C 语法for 循环:”

for (( i=0; i<10; i++)); do

echo $i

done

---------------------------------------------------------------------------------------------------------

shell中for循环用法

shell语法好麻烦的,一个循环都弄了一会 ,找了几个不同的方法来实现输出1-100间可以被3整除的数

1.用()

代码如下:

#!/bin/bash

clear

for((i=1;i<100;i++))

for

do

if((i%3==0))

then

echo $i

continue

fi

done

2.使用`seq 100`

代码如下:

#!/bin/bash

clear

for i in `seq 100`

do

if((i%3==0))

then

echo $i

continue

fi

done

3.使用while

代码如下:

#!/bin/bash

clear

i=1

while(($i<100))

do

if(($i%3==0))

then

echo $i

fi

i=$(($i+1))

done

--------------------------------------------------------------------------------------------------------

在shell用for循环做数字递增的时候发现问题,特列出shell下for循环的几种方法:

1.

代码如下:

for i in `seq 1 1000000`;do

echo $i

done

用seq 1 10000000做递增,之前用这种方法的时候没遇到问题,因为之前的i根本就没用到百万(1000000),因为项目需要我这个数字远大于百万,发现用seq 数值到 1000000时转换为1e+06,根本无法作为数字进行其他运算,或者将$i有效、正确的取用,遂求其他方法解决,如下

2.

代码如下:

for((i=1;i<10000000;i++));do

echo $i

done

3.

i=1

while(($i<10000000));do

echo $i

i=`expr $i + 1`

done

因为本方法调用expr故运行速度会比第1,第2种慢不少不过可稍作改进,将i=`expr $i + 1`改为i=$(($i+1))即可稍作速度的提升,不过具体得看相应shell环境是否支持

4.

代码如下:

for i in {1..10000000;do

echo $i

done

其实选用哪种方法具体还是得由相应的shell环境的支持,达到预期的效果,再考虑速度方面的问题,

Shell中的for循环总结

示例:

代码如下:

# !/bin/sh

i=1

function test_while(){

i=1

while [ $i ]

do

echo $i

i=`expr $i + 1`

if [ $i -ge 10 ]; then

break

fi

done

}

function test_for(){

i=1

for ((i=1; i<=100; i++)); do

echo $i

if [ $i -ge 10 ]; then

break

fi

done

}

function test_continue(){

i=1

for i in $(seq 100); do

if (( i==0 )); then

echo $i

continue

fi

done

}

echo “test_while...”

test_while

echo “test_for...”

test_for

echo “test_continue...”

test_continue

运行结果:

代码如下:

test_while...

1

2

3

4

5

6

7

8

9

test_for...

1

2

3

4

5

6

7

8

9

10

test_continue...

10

20

30

40

50

60

70

80

90

100

篇6:Korn Shell

Korn Shell执行命令的顺序

1.关键字,如if,for,function等

2.别名(Aliases)

3.内部命令,如cd, whence和函数等

4.函数Functions

5.脚本Scripts、在PATH中的可执行程序

※找到命令的根源用下面的命令:

whence -v command

或:

type command

Alias(别名)

alias aliasname=command

取消一个别名:

unalias aliasname

列出当前所有的别名:

alias

【TIP】

用来显式当前目录下的所有目录的别名:alias ldir='ls -l|grep ^d'

提问:alias|grep ^ls会看到:ls=/usr/bin/ls,请问:系统为什么要定义这个别名?

Functions(函数)

定义的位置:

Function可以在命令行、.kshrc(ENV文件,见下篇)或在shell script中定义

定义的方法:

function funcname {

shell commands

}

或:

funcname () {

shell commands

}

列出所有当前的functions

functions

取消一个function

unset -f funcname

输出一个function:

typeset -fx funcname

取消输出一个function:

typeset +fx funcname

※function是“typeset -f”的预定义的别名

Korn Shell 的选项

Korn Shell有一些选项,如果在.kshrc(ENV文件,见下篇)中设定他们,那么他们就是全局的,并且可以传递给subshell,

列出所有的Korn Shell选项:

set -o

设置一个选项

set -o OptionName

取消一个选项

set +o OptionName

Korn Shell 选项的意义

allexport 自动export随后定义地所有变量(文件名中不含有.).(等于set -a)

errexit 如果一个命令的返回值不为0,就执行错误陷阱(ERR trap)。但对profile文件例外。(等于set -e)

bgnice 后台进程以较低的优先级运行,这是缺省值

emacs 使用emacs风格的行内编辑器

gmacs 使用gmacs风格的行内编辑器

ignoreeof 遇到文件结束符时不退出shell。要想退出shell必须使用exit命令或者敲Ctrl-D 11次。

keyword 为了保持与Bourne shell的兼容性。(set -k)

markdirs 在完成文件名替换后在目录名后面加一个斜线(/),

monitor Runs background jobs in a separate process and prints a line upon completion. (set -m)

noclobber 不能用>重定向符覆盖已经存在的文件。只能用>|来重写已经存在的文件。noexec 读入命令只检查它的语法但不执行。 (set -n)

noglob 禁止文件名替换。(set -f)

nolog 不在历史文件中保存函数的定义。

nounset 在试图扩展没有定义的变量时显示错误信息。(set -u)

privileged 禁止执行HOME/.profile file 并且使用/etc/suid _profile 而不是ENV文件。 (set -p)

verbose 显示shell读入的输入.(set -v)

trackall Designates each command as a tracked alias when first encountered.(set -h)

vi 使用vi风格的行内编辑器

viraw Processes each character as it is typed in vi mode.

xtrace 在运行命令前,先显示命令.(set -x)

※举例:使vi成为inline editor

set -o vi

Debuging(调试)

调试一个shell script的方法:

#set -o xtrace

然后再运行shell

或者直接执行

#ksh -x shellprog args

#sh -v shellprog args

Debug 一个function

#typeset -ft funcname

Prompts(提示)

PS1 主shell提示符(普通用户缺省是 $,而root缺省是#)

PS2 继续提示符( 缺省 > )

什么是继续提示符?

在命令行上输入

for i in 11 12 13 14 15 16

do

lspv hdisk$i

done

从第二行开始,屏幕最左面就是继续提示符。

PS3 在选择循环中的选择提示符(缺省是 #? )

PS4 调试提示符 (缺省是 + )

【tip】:命令行上提示主机名称和当前目录

export PS1=“[`hostname`-”'$PWD]'

注意:一定是“”包括``才能取得命令的结果,''包括变量才能随时更改变量的值

效果:

[hostname-/tmp]

篇7:Shell 调试

一、简介

本文全面系统地介绍了shell脚本调试技术,包括使用echo, tee, trap等命令输出关键信息,跟踪变量的值,在脚本中植入调试钩子,使用“-n”选项进行shell脚本的语法检查, 使用“-x”选项实现shell脚本逐条语句的跟踪,巧妙地利用shell的内置变量增强“-x”选项的输出信息等,

二、shell调试选项

1)只读取shell脚本,不实际执行,用于检测shell脚本是否存在语法错误

-n

2)使shell解释器从一个字符串中读取并执行shell指令,用于临时测试小段脚本

-c “string”

3)进入跟踪方式,使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个“+”号

-x

示例:

$ sh –x exp2.sh+ trap 'echo “before execute line:$LINENO, a=$a,b=$b,c=$c”' DEBUG++ echo 'before execute line:3, a=,b=,c='before execute line:3, a=,b=,c=+ a=1++ echo 'before execute line:4, a=1,b=,c='before execute line:4, a=1,b=,c=+ '[' 1 -eq 1 ']'++ echo 'before execute line:6, a=1,b=,c='before execute line:6, a=1,b=,c=+ b=2++ echo 'before execute line:10, a=1,b=2,c='before execute line:10, a=1,b=2,c=+ c=3++ echo 'before execute line:11, a=1,b=2,c=3'before execute line:11, a=1,b=2,c=3+ echo endend

三、shell调试工具:bashdb

bashdb.sourceforge.net/

篇8:ODBC Shell

ODBC Shell是一个为Unix 环境提供的ODBC命令行客户端, 提供在命令行方式下方便的访问 ODBC 数据库的功能。

特性

Ability to maintain multiple concurrent database connections.

Command history using GNU Readline.

Output results as CSV, Fixed Length Fields, SQL, or XML.

Licensed under the Bindle Binaries Open Source license.

软件要求

GNU Autoconf 2.65

GNU Automake 1.10

GNU GCC 4.2.1

GNU Libtool 2.4

GNU Readline 6.1

iODBC 3.52.6 or unixODBC 2.3.0

Git 1.7

测试支持的平台

FreeBSD 8.1

MyODBC 3.51.26

SQLite ODBC 0.88

OS X 10.6.6

FileMaker xDBC 11.3.76

MyODBC 5.1.8

SQLite ODBC 0.88

Slackware 13.1

MyODBC 5.1.8

SQLite ODBC 0.88

项目主页:www.open-open.com/lib/view/home/1325766168203

篇9:什么是Smarty变量操作符?如何使用Smarty变量操作符

什么是Smarty变量操作符?如何使用Smarty变量操作符

php模板引擎smarty内置的一些操作函数,我们称之为变量操作符,变量操作符可用于操作变量,自定义函数和字符,(跟我PHP中常用的PHP内部函数类似)

他可以帮助我们完成很多比较实用的功能,如:首字母大写,拆分,替换,截取…

更像是我们提前写好的.一些PHP常用类…

如何使用Smarty变量操作符:

语法中使用”|”应用变量操作符,多个参数用”:” 分隔开来

例子:{$name|truncate:10:”…”} ——–截取前十个字符,多则用…代替

拓展:

本文汇总了Smarty中常用变量操作符,分享给大家供大家参考。具体如下:

php模板引擎smarty的变量操作符可用于操作变量,自定义函数和字符。

语法中使用“|”应用变量操作符,多个参数用“:”??指簟?/DIV>

capitalize[首字母大写]

count_characters[计算字符数]

cat[连接字符串]

count_paragraphs[计算段落数]

count_sentences[计算句数]

count_words[计算词数]

date_format[时间格式]

default[默认]

escape[转码]

indent[缩进]

lower[小写 ]

nl2br[换行符替换成

]

regex_replace[正则替换]

replace[替换]

spacify[插空]

string_format[字符串格式化]

strip[去除(多余空格)]

strip_tags[去除html标签]

truncate[截取]

upper[大写]

wordwrap[行宽约束]

组合使用多个操作符

篇10:Shell脚本传参数方法总结

这篇文章主要介绍了Shell脚本传参数方法总结,本文着重讲解传递固定个数参数的方法、可变个数参数的方法两部份内容,需要的朋友可以参考下

一、接收固定长度的参数

代码如下:

[root@svn shell_example]# cat params.sh

#!/bin/bash

#传参测试脚本

echo “My name is `basename $0` -I was called as $0”

echo “My first parameter is : $1”

echo “My second parameter is : $2”

空参数执行

代码如下:

[root@svn shell_example]# sh params.sh

My name is params.sh -I was called as params.sh

My first parameter is :

My second parameter is :

传递2个参数执行

代码如下:

[root@svn shell_example]# sh params.sh one two

My name is params.sh -I was called as params.sh

My first parameter is : one

My second parameter is : two

二、那如果还有参数怎么办呢?还要一个个加上来吗?答案是否定的

以下用法应该不陌生,就是直接执行脚本本身,没有附带任何参数,那么脚本讲抛出帮助信息.即怎么使用此脚本.见红字部分

代码如下:

[root@svn shell_example]# sh params_v2.sh

My name is params_v2.sh -I was called as params_v2.sh

I was called with 0 parameters.

Usage: params_v2.sh first second

You provided 0 parameters,but 2 are required.

代码如下

代码如下:

[root@svn shell_example]# cat params_v2.sh

#!/bin/bash

# 这是个测试脚本传参的测试例子

echo “My name is `basename $0` -I was called as $0”

echo “I was called with $# parameters.”

if [ “$#” -eq “2” ];then

echo “My first parameter is $1”

echo “My second parameter is $2”

else

echo “Usage: `basename $0` first second”

echo “You provided $# parameters,but 2 are required.”

fi

详细的执行过程如下

不传参数执行

代码如下:

[root@svn shell_example]# sh params_v2.sh

My name is params_v2.sh -I was called as params_v2.sh

I was called with 0 parameters.

Usage: params_v2.sh first second

You provided 0 parameters,but 2 are required.

传递3个参数执行

代码如下:

[root@svn shell_example]# sh params_v2.sh one two three

My name is params_v2.sh -I was called as params_v2.sh

I was called with 3 parameters.

Usage: params_v2.sh first second

You provided 3 parameters,but 2 are required.

传递2个参数执行

代码如下:

[root@svn shell_example]# sh params_v2.sh one two

My name is params_v2.sh -I was called as params_v2.sh

I was called with 2 parameters.

My first parameter is one

My second parameter is two

问题来了,要是后期还要加参数怎么办呢?或者我也不确定到底会传几个参数.

解决方法如下,详细执行结果如下

代码如下:

[root@svn shell_example]# cat manyparams.sh

#!/bin/bash

#这是个测试脚本传N个参数的例子

echo “我的名字是 `basename $0` - 我是调用自 $0”

echo “我有 $# 参数”

count=1

while [ “$#” -ge “1” ];do

echo “参数序号为 $count 是 $1”

let count=count+1

shift

done

一个参数执行

[root@svn shell_example]# sh manyparams.sh one

我的名字是 manyparams.sh - 我是调用自 manyparams.sh

我有 1 参数

参数序号为 1 是 one

5个参数执行

代码如下:

[root@svn shell_example]# sh manyparams.sh one two three four five

我的名字是 manyparams.sh - 我是调用自 manyparams.sh

我有 5 参数

参数序号为 1 是 one

参数序号为 2 是 two

参数序号为 3 是 three

参数序号为 4 是 four

参数序号为 5 是 five

篇11:linux shell命令常用方法总结linux操作系统

本文章来给大家详细介绍linux shell命令用法总结,有需要了解的朋友可进入参考参考,

日期

# 取前一天

date -d ’1 days ago’ +%Y-%m-%d

命令?e名?定功能: (alias)

alias ll=’ls -al’

一些特殊值

$$:(?於本 shell 的 PID)

$!:得到子进程的进程PID,例如nohup的命令可以通过这个获取PID

$?:(?於上???绦兄噶畹幕?髦?

$#: 参数个数

$@ :代表『 “$1″ “$2″ “$3″ “$4″ 』

$* :代表『 “$1c$2c$3c$4″ 』,其中 c ?榉指糇衷?/p>

declare

数值计算要用 declare -i sum=100+12

也可以用sum=$((100+12))计算

[root@www ~]# declare [-aixr] variable

?????担?br />-a :?⑨崦婷? variable 的??刀?x成?殛?列 (array) ?型

-i :?⑨崦婷? variable 的??刀?x成?檎??底 (integer) ?型

-x :用法? export 一?樱?褪?⑨崦娴 variable ?成?境??担?br />-r :?⒆??翟O定成? readonly ?型,???挡豢杀桓??热荩?膊荒 unset

数组

var[1]=”small min”

echo $(var[1])

删除/替换字符

echo ${PATH#/usr*:} #从前到后开始删除掉第一个符合条件的字符

echo ${PATH##/usr*:} #从前到后开始删除掉所有符合条件的字符

也可以从后面开始,就是把#号替换成%号

echo ${PATH/usr/USR} #替换

echo ${PATH//usr/USR} #替换所有

&&和||

可以把多条命令串起来,例如

ls ./test/||mkdir ./test/ #如果目录不存在,创建一个

判断

使用中括号时注意空格必须要有[ -e “xxx” ]

语法

if [ “$name” == “Fatkun” ]; then

echo “Hi!Fatkun”

elif [ ... ]; then

echo “...”

else

echo “...”

fi

?y?的?苏I 代表意?

1. ?於某???n名的『?n案?型』判?啵? test -e filename 表示存在否

-e ?『?n名』是否存在?(常用)

-f ?『?n名』是否存在且??n案(file)?(常用)

-d ?『?n名』是否存在且?槟夸?(directory)?(常用)

-b ?『?n名』是否存在且?橐?? block device ?置?

-c ?『?n名』是否存在且?橐?? character device ?置?

-S ?『?n名』是否存在且?橐?? Socket ?n案?

-p ?『?n名』是否存在且?橐?? FIFO (pipe) ?n案?

-L ?『?n名』是否存在且?橐?????n?

2. ?於?n案的?嘞??y,如 test -r filename 表示可?否 (但 root ?嘞蕹S欣??

-r ??y??n名是否存在且具有『可?』的?嘞蓿

-w ??y??n名是否存在且具有『可??』的?嘞蓿

-x ??y??n名是否存在且具有『可?绦小坏?嘞蓿

-u ??y??n名是否存在且具有『SUID』的?傩裕

-g ??y??n名是否存在且具有『SGID』的?傩裕

-k ??y??n名是否存在且具有『Sticky bit』的?傩裕

-s ??y??n名是否存在且?椤悍强瞻?n案』?

3. ????n案之?的比?,如: test file1 -nt file2

-nt (newer than)判? file1 是否比 file2 新

-ot (older than)判? file1 是否比 file2 ?

-ef 判? file1 ? file2 是否?橥??n案,可用在判? hard link 的判定上,

主要意?在判定,????n案是否均指向同一?? inode 哩!

4. ?於???整?抵?g的判定,例如 test n1 -eq n2

-eq ??抵迪嗟 (equal)

-ne ??抵挡坏 (not equal)

-gt n1 大於 n2 (greater than)

-lt n1 小於 n2 (less than)

-ge n1 大於等於 n2 (greater than or equal)

-le n1 小於等於 n2 (less than or equal)

5. 判定字串的?料

test -z string 判定字串是否? 0 ?若 string ?榭兆执??t? true

test -n string 判定字串是否非? 0 ?若 string ?榭兆执??t? false。

?: -n 亦可省略

test str1 = str2 判定 str1 是否等於 str2 ,若相等,?t回? true

test str1 != str2 判定 str1 是否不等於 str2 ,若相等,?t回? false

6. 多重?l件判定,例如: test -r filename -a -x filename

-a (and)???r同?r成立!例如 test -r file -a -x file,?t file 同?r具有 r ? x ?嘞?r,才回? true。

-o (or)???r任何一??成立!例如 test -r file -o -x file,?t file 具有 r 或 x ?嘞?r,就可回? true。

! 反相??B,如 test ! -x file ,? file 不具有 x ?r,回? true

case语法

case $??得?Q in  <==??字? case ,?有??登坝绣X字?

“第一?????热?quot;)  <==每?????热萁ㄗh用?引?括起?恚?P?字?t?樾±ㄌ? )

程式段

;;           <==每????e?尾使用?????的分??硖?理!

”第二?????热?quot;)

程式段

;;

*)                 <==最後一?????热荻?? * ?泶?硭?衅渌??br />不包含第一?????热菖c第二?????热莸钠渌?淌?绦卸?br />exit 1

;;

esac                 <==最?的 case ?尾!『反????』思考一下!

while语法

while [ condition ] <==中括??鹊??B就是判?嗍?br />do           <==do 是?圈的?始!

程式段落

done         <==done 是?圈的?束

for…do…done语法

for var in con1 con2 con3 ...

do

程式段

done

for((i=1;i<100;i++));do

echo $i

done

软链接替换

ln -snf ./hive-0.7.1/ hive

利用grep和gawk,xargs来kill

xargs会把gawk的每一行变成kill的参数,如 kill 1 2 3

grep -v 是排除

ps -ef|grep scott|grep -v grep|gawk {‘print $1′}|xargs kill

sed命令替换文本

sed -i “s/oldstring/newstring/g” `grep oldstring -l yourdir` #在原文件修改

sed “s/oldstring/newstring/g” file >file.new # 输出到其他文件

tar

tar --exclude=./xxx/Cache --exclude=*/log/* -cvzf xxx_`date +“%Y-%m-%d_%H_%M”`.tar.gz ./xxx

获取机器IP

/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d “addr:”

篇12:巧妙利用site:操作符和Sitemap统计数据

原文:Using stats from site: and Sitemap details

发表于:3月4日星期三,下午4:40

在与网站管理员相关的博客和论坛中,我们经常可以听到这样的讨论:网站管理员们对他们的网站进行[site:example.com]查询的时候,经常发现被索引的页面数量通常和网站管理员工具中的Sitemap报告展示的URL数量不一致,这种不一致看起来很像是一个bug,但实际上我们是有意这样设计的。您的Sitemap报告仅仅反映了您在Sitemap文件中提交的URL,而site:操作符则包含了所有Google已经抓取的您的网站上的 URL,这有可能包含一些没有囊括在您Sitemap文件内的URL,比如新添加的URL或其他通过跟踪链接而抓取到的URL,

您可以把site:操作符作为一个快速诊断您的网站整体健康情况的方法。site:操作符可以向您展示:

您的网站被索引的页面数量的粗略估计值

如果您的网站被黑掉了,那么您可以从中发现一些蛛丝马迹

观察您的网站有无重复的网页标题和内容摘要

下面是一个使用site:操作符的例子:

您的Sitemap报告提供了关于您提交的URL的详细统计数据,比如实际被索引的URL数目与请求被索引的URL数目,此外这份摘要还会显示Google尝试抓取您提供的URL时是否存在任何错误或错误提醒。

您可以通过阅读帮助中心关于site:操作符和Sitemap的帮助文章来进一步了解相关信息。如果您有进一步的问题,欢迎您到谷歌网站管理员支持论坛中发贴提问,那里有很多有经验的站长和谷歌员工乐意帮助您:-)

篇13:SET操作符(UNION/UNIONALL/INTERSECT/MINUS)

Union因为要进行重复值扫描,所以效率低,如果合并没有刻意要删除重复行,那么就使用Union All

两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。

union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

可以在最后一个结果集中指定Order by子句改变排序方式。

例如:

建两张表:s1,s2

create table s1

(

id number(10),

name varchar2(20),

age number(10)

)

create table s2

(

id number(10),

name varchar2(20),

age number(10)

)

插入数据:

insert into s1 values(1,'刘备',51);

insert into s1 values(1,'刘德华',54);

insert into s1 values(3,' 张学友',54);

insert into s1 values(4,'黎明',54);

insert into s2 values(1,'刘备',51);

insert into s2 values(3,' 张飞',52);

insert into s2 values(4,'关羽',53);

1、Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

select * from s1

union

select * from s2;

得到结果集:

ID NAME AGE

1 1 刘备 51

2 1 刘德华 54

3 3 张飞 52

4 3 张学友 54

5 4 关羽 53

6 4 黎明 54

2、Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

select * from s1

union all

select * from s2;

得到结果集:

ID NAME AGE

1 1 刘备 51

2 1 刘德华 54

3 3 张学友 54

4 4 黎明 54

5 1 刘备 51

6 3 张飞 52

7 4 关羽 53

3、Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

select * from s1

Intersect

select * from s2;

得到结果集:

ID NAME AGE

1 1 刘备 51

4、Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序,

select * from s1

Minus

select * from s2;

得到结果集:

ID NAME AGE

1 1 刘德华 54

2 3 张学友 54

3 4 黎明 54

shell脚本学习

SHELL病毒简介

壳牌Shell笔试经验谈

Shell脚本实现ftok函数

Shell Company 笔试考题目

下载Shell常用操作符总结(整理13篇)
Shell常用操作符总结.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
点击下载本文文档