当前位置:首页 > 科技 > 正文

shell脚本if else(shell脚本中if语句有多个条件)

shell脚本if else(shell脚本中if语句有多个条件)

老铁们,大家好,相信还有很多朋友对于shell脚本if else和shell脚本中if语句有多个条件的相关问题不太懂,没关系,今天就由我来为大家分享分享shell脚本i...

老铁们,大家好,相信还有很多朋友对于shell脚本if else和shell脚本中if语句有多个条件的相关问题不太懂,没关系,今天就由我来为大家分享分享shell脚本if else以及shell脚本中if语句有多个条件的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

shell脚本里怎么把目录作为变量

#!/bin/bash dir=$1 if[!-d$dir];then echo$dirisnotdir fi cd$dir f=0 d=0 foriin`ls-R$dir`;do if[!-d$i];then cat$i letf++ else echo$iisdir letd++ fi done echofilenumis$f echodirnumis$d

如何在shell脚本中判断文件或者文件夹是否存在

在Shell脚本中,可以使用条件判断语句来判断文件或文件夹是否存在。常用的条件判断语句有以下几种方式:

1.使用`-e`选项:使用`-e`选项可以判断一个路径是否存在,无论是文件还是文件夹。例如:

```bash

if[-e"/path/to/file_or_folder"];then

echo"文件或文件夹存在"

else

echo"文件或文件夹不存在"

fi

```

2.使用`-f`和`-d`选项:如果要分别判断文件和文件夹是否存在,可以使用`-f`选项判断是否为普通文件,使用`-d`选项判断是否为目录。例如:

```bash

if[-f"/path/to/file"];then

echo"文件存在"

else

echo"文件不存在"

fi

if[-d"/path/to/folder"];then

echo"文件夹存在"

else

echo"文件夹不存在"

fi

```

3.使用`test`命令:`test`命令也可以用于条件判断。例如:

```bash

iftest-e"/path/to/file_or_folder";then

echo"文件或文件夹存在"

else

echo"文件或文件夹不存在"

fi

```

以上是判断文件或文件夹是否存在的常见方法,在实际使用时根据需要选择合适的方式即可。需要注意的是,路径应当是绝对路径或相对于当前工作目录的相对路径。

如何用expect写一个自动登录脚本

1.安装expect

需要先安装tcl:apt-getinstalltcl

apt-getinstallexpect

2.expect

使用

2.1一个简单的输入密码操作

#!/usr/bin/expect

settimeout100

setpassword"123456"

spawnsudorm-rfzzlogic

expect"root123456"

send"$password\n"

interact

说明:

第一行#!/usr/bin/expect表示使用expect的shell交互模式

set是对变量password赋值

settimeout100:设置超时时间为100秒,如果要执行的shell命令很长可以设置超时时间长一些。expect超过超时时间没有监测到要找的字符串,则不执行,默认timeout为10秒

spawn在expect下执行shell脚本

expect对通过spawn执行的shell脚本的返回进行判断,是否包含“”中的字段

send:如果expect监测到了包含的字符串,将输入send中的内容,\n相当于回车

interact:退出expect返回终端,可以继续输入,否则将一直在expect不能退出到终端

2.2expect的命令行参数

[lindex$argvn]获得index为n的参数(index从0开始计算)

$argc为命令行参数的个数

[lrange$argv00]表示第一个参数

[lrange$argv03]表示第1到第3个参数

例如

scp_service.sh

文件,可以./

scp_service.sh

-rm来执行,这时是赋值了一个参数

setoption[lindex$argv0](获得第一个参数存到变量option中,参数是的index是从0开始计算的)

2.3if...elif...else...

expect支持if语句,

if{条件1}{

条件1执行语句

}elif{条件2}{

条件2执行语句

}else{

其他情况执行语句

}

说明:

1.if

的条件用{}来包含条件

2.if

和后面的{}必须有空格隔开

3.两个花括号之间必须有空格隔开,比如if{}{},否则会报错expect:extracharactersafterclose-brace

3.使用{来衔接下一行,所以if的条件后需要加左花括号{

4.else

不能单独放一行,所以else要跟在}后面

怎样用shell判断一个文件是否为空文件

1、if语句判断-sfilename如果filename存在不为空,则为真[-s/var/log/syslog]取反存在且为空[!-s/var/log/syslog]2、例如#!/bin/shfile=~/a.txtif[!-s$file];thenecho$fileisablankfileelseecho$fileisnotablankfilefi

请教:在Shell中如何作数字和字符的转换

加双引号就可以了var=1if["$var"="1"];thenecho"Stringmatch!"elseecho"Notmatch!"fi这就将数字的比较转化为了字符串的比较。(数字的比较是用-eq操作符)

var1="$var"这样就转化了

Linux下简单的判断目录中是否有新文件的Shell

因shell还不是很熟练,所以做此笔记,方便查看。

#!/bin/sh

myPath="/var/log/httpd/"

myFile="/var/log/httpd/access.log"

#这里的-x参数判断$myPath是否存在并且是否具有可执行权限

if[!-x"$myPath"];then

mkdir"$myPath"

fi

#这里的-d参数判断$myPath是否存在

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

mkdir"$myPath"

fi

#这里的-f参数判断$myFile是否存在

if[!-f"$myFile"];then

touch"$myFile"

fi

#其他参数还有-n,-n是判断一个变量是否是否有值

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

echo"$myVarisempty"

exit0

fi

#两个变量判断是否相等

if["$var1"="$var2"];then

echo'$var1eq$var2'

else

echo'$var1noteq$var2'

fi

========================================

shell判断语句

流程控制"if"表达式如果条件为真则执行then后面的部分:if....;then

....

elif....;then

....

else

....

fi

大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…通常用"[]"来表示条件测试。注意这里的空格很重要。要确保方括号的空格。

[-f"somefile"]:判断是否是一个文件

[-x"/bin/ls"]:判断/bin/ls是否存在并有可执行权限

[-n"$var"]:判断$var变量是否有值

["$a"="$b"]:判断$a和$b是否相等-rfile用户可读为真

-wfile用户可写为真

-xfile用户可执行为真

-ffile文件为正规文件为真

-dfile文件为目录为真

-cfile文件为字符特殊文件为真

-bfile文件为块特殊文件为真

-sfile文件大小非0时为真

-tfile当文件描述符(默认为1)指定的设备为终端时为真

#########################################################

含条件选择的shell脚本

对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,

包括比较运算、判断文件是否存在等。基本的if条件命令选项有:-eq—比较两个参数是否相等(例如,if[2–eq5])

-ne—比较两个参数是否不相等

-lt—参数1是否小于参数2

-le—参数1是否小于等于参数2

-gt—参数1是否大于参数2

-ge—参数1是否大于等于参数2

-f—检查某文件是否存在(例如,if[-f"filename"])

-d—检查目录是否存在

几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。##################################################################判断文件是否存在

#!/bin/sh

today=`date-dyesterday+%y%m%d`

file="apache_$today.tar.gz"

cd/home/chenshuo/shell

if[-f"$file"];then

echo"OK"

else

echo"error$file">error.log

mail-s"failbackupfromtest"linuxcy@126.comfi

如果你还想了解更多这方面的信息,记得收藏关注本站。

最新文章