Linux之if命令——简单的shell文件

Linux之if命令——简单的shell⽂件

如何写⼀个shell⽂件,写⼀个⼩脚本1、新建⼀个脚本⽂件:vi demo.sh

2、追加执⾏权限: chmod u+x demo.sh

3、执⾏脚本:./demo.sh

4、什么是脚本?把⼀堆命令放到⼀个⽂件⾥⾯,然后只需要执⾏⽂件就可以。

5、脚本的⽬的?尽可能的简化我们的操作,让效率更⾼。

6、test ls 检测该条命令是否成功

7、echo $? 检测上⼀条命令是否成功 ,打印为0 代表成功,只要不是0都是失败的。

8、test 'a'='a' >> [[ 'a' = 'a' ]] equal = 判断字符串相等

9、[[ -n 'a' ]] —— -n 判断字符串的长度不为0

[[ -z 'a' ]] —— -n 判断字符串的长度为0

[[ 'a' = 'a' ]] —— = 判断字符串相等

[[ 'a' != 'a' ]] ——!=判断两个字符串不等

[[ 1 -eq 2 ]] —— -eq判断数字 相等

[[ 1 -ge 2 ]] —— -ge判断数字1 ⼤于 等于数字2

[[ 1 -gt 2 ]] —— -gt判断数字1 ⼤于 数字2

[[ 1 -le 2 ]] —— -le判断数字1 ⼩于 等于数字2

[[ 1 -lt 2 ]] —— -lt判断数字1 ⼩于 数字2

9、逻辑运算符

and >>>> -a ——[[ 'a' = 'a' -a 'b' = 'b' ]]

or >>>> -o —— [[ 'a' = 'a' -o 'b' = 'b' ]]

if的时候[ ]要去掉⼀个

10、if语句----登录⼩练习

vim login.sh

#!/bin/bash

read -p '请输⼊⽤户名' username

read -p '请输⼊密码' passwd

user='wuzm'

password='123456'

if [ $username = $user -a $passwd = $password ];then

echo "欢迎wuzm!"else

echo "密码错误"fi

增加执⾏权限:chmod u+x login.sh

执⾏脚本:./login.sh

合集下载

操作系统实验报告(包括线程,进程,文件系统管理,linux+shell简单命令)

操作系统实验报告(包括线程,进程,文件系统管理,linux+shell简单命令)

操作系统实验报告

班级: 030613

学号: 03061331

姓名: 裴帅帅

实验一:进程的建立

一、实验内容

创建进程及子进程,在父子进程间实现进程通信,创建进程并显示标识等进程控制块的属性信息,显示父子进程的通信信息和相应的应答信息。

使用匿名管道实现父子进程之间的通信。

二、源程序

1、创建匿名管道

SECURITY_ATTRIBUTES sa;

sa.bInheritHandle=true;

sa.lpSecurityDescriptor=NULL;

sa.nLength=sizeof(SECURITY_ATTRIBUTES);

if(!CreatePipe(&m_hRead,&m_hWrite,&sa,0))

{

MessageBox("创建匿名管道失败");

return false;

}

2、创建子进程

STARTUPINFO si;

ZeroMemory(&si,sizeof(STARTUPINFO));

si.cb=sizeof(STARTUPINFO);

si.dwFlags=STARTF_USESTDHANDLES;

si.hStdInput=m_hRead;

si.hStdOutput=m_hWrite;

si.hStdError=GetStdHandle(STD_ERROR_HANDLE);

if(!CreateProcess(NULL,"子进.exe",NULL,NULL,true,0,NULL,NULL,&si,&pi))

{

MessageBox("创建子进程失败");

CloseHandle(m_hRead);

CloseHandle(m_hWrite);

m_hRead=NULL;

m_hWrite=NULL;

return;

}

3、销毁子进程

Shell中if条件判断总结

Shell中if条件判断总结

Shell中if条件判断总结

⼀、if的基本语法:if [ command ];then

符合该条件执⾏的语句

elif [ command ];then

符合该条件执⾏的语句

else

符合该条件执⾏的语句

fi

⼆、⽂件/⽂件夹(⽬录)判断[ -b FILE ] 如果 FILE 存在且是⼀个块特殊⽂件则为真。

[ -c FILE ] 如果 FILE 存在且是⼀个字特殊⽂件则为真。

[ -d DIR ] 如果 FILE 存在且是⼀个⽬录则为真。

[ -e FILE ] 如果 FILE 存在则为真。

[ -f FILE ] 如果 FILE 存在且是⼀个普通⽂件则为真。

[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。

[ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。

[ -p FILE ] 如果 FILE 存在且是⼀个名字管道(F如果O)则为真。

[ -r FILE ] 如果 FILE 存在且是可读的则为真。

[ -s FILE ] 如果 FILE 存在且⼤⼩不为0则为真。

[ -t FD ] 如果⽂件描述符 FD 打开且指向⼀个终端则为真。

[ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。

[ -w FILE ] 如果 FILE存在且是可写的则为真。

[ -x FILE ] 如果 FILE 存在且是可执⾏的则为真。

[ -O FILE ] 如果 FILE 存在且属有效⽤户ID则为真。

[ -G FILE ] 如果 FILE 存在且属有效⽤户组则为真。

[ -L FILE ] 如果 FILE 存在且是⼀个符号连接则为真。

[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。

[ -S FILE ] 如果 FILE 存在且是⼀个套接字则为真。

[ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。

shell if嵌套语法

shell if嵌套语法

shell if嵌套语法

Shell if嵌套语法

Shell是一种脚本语言,常用于Linux和Unix系统中。if语句是Shell中的一种条件语句,用于根据条件执行不同的命令。在Shell中,if语句可以嵌套,即在if语句中再嵌套一个if语句,以实现更复杂的条件判断。

if语句的基本语法如下:

if [ condition ]

then

command1

command2

...

fi

其中,condition是一个条件表达式,可以是比较运算符、逻辑运算符、文件测试等。如果condition为真,则执行then后面的命令,否则跳过。

if语句的嵌套语法如下:

if [ condition1 ]

then if [ condition2 ]

then

command1

command2

...

fi

fi

其中,condition1和condition2都是条件表达式。如果condition1为真,则执行第一个if语句中的命令;如果condition2也为真,则执行第二个if语句中的命令。

if语句的嵌套可以无限层,但是要注意代码的可读性和复杂度。下面是一个三层嵌套的if语句示例:

if [ condition1 ]

then

if [ condition2 ]

then

if [ condition3 ]

then

command1

command2

... fi

fi

fi

在实际编程中,if语句的嵌套可以用于复杂的条件判断和流程控制。例如,可以根据不同的条件执行不同的命令,或者根据多个条件的组合判断是否执行某个命令。

shell if的用法

shell if的用法

shell if的用法

在Shell编程中,if语句是最基本的条件语句之一,主要用于根据某个条件执行不同的代码段。本文将详细介绍Shell中if语句的用法。

语法结构

在Shell脚本中,if语句的语法结构如下所示:

if condition

then

command1

...

else

fi

其中,condition表示条件表达式,它可以是一个命令、一个字符串、一个数字等。如果该条件表达式为真,则执行then块中的命令;否则执行else块中的命令。

注意:if语句以“fi”结尾。

示例代码

下面是一个简单的示例代码,展示了如何使用if语句:

#!/bin/bash

a=10

b=20

if [ $a == $b ]

echo "a 等于 b"

运行上述脚本,输出结果为:

a 不等于 b

解析代码: - 首先定义变量a和b的值分别为10和20;

- 接着使用if判断a是否等于b,由于$a不等于$b,因此执行else块中的命令;

- 最后输出结果。

条件表达式

在Shell脚本中,if语句的条件表达式可以是一个命令、一个字符串、一个数字等。

命令

如果条件表达式是一个命令,则if语句会将该命令的退出状态作为判断条件。退出状态为0表示命令执行成功,非0值表示命令执行失败。例如:

if pwd

echo "当前目录为:$(pwd)"

当前目录为:/home/user

- 使用pwd命令获取当前目录;

- if语句判断pwd命令的退出状态,由于pwd命令顺利执行,退出状态为0,因此执行then块中的命令;

- 最后输出当前目录。

字符串比较

if命令格式

if命令格式

if命令格式

if命令是Linux/Unix操作系统中非常常用的一种条件控制语句。其基本格式如下:

```Shell

if [条件判断语句]; then

[执行语句]

elif [条件判断语句]; then

[执行语句]

else

[执行语句]

fi

```

其中 if 后面的条件判断语句可以是比较表达式、文件测试表达式(如 -f、-d等),也可以是逻辑表达式等。如果条件成立,就会执行 then 后面的语句;否则将跳过该语句块。

当有多个条件需要判断时,可以使用 elif 来增加条件分支。如果所有条件都不成立,就会执行 else 后面的语句。

if语句中也可以嵌套使用,也可以与循环语句等其他命令结合使用。其中最常见的就是与 test 命令结合使用,例如:

```Shell

if test -d /mnt/hgfs; then

echo "The directory /mnt/hgfs exists!"

fi

```

这条语句用于测试是否存在 /mnt/hgfs 目录,如果存在,则输出一条提示信息。

另外需要注意的是,在 if 命令中的条件判断语句两侧必须有空格,否则会报错。同时,当条件判断语句中含有空格或特殊字符时,需要使用引号将条件判断语句括起来。

总之,if语句是Linux/Unix命令行中一个非常常用的控制语句,可以用于流程控制、条件分支、文件检查等多种场合,熟练掌握if语句的使用可以提高工作效率。

shell if 逻辑

shell if 逻辑

shell if 逻辑

Shell if 语句是一种流程控制语句,它允许我们根据不同的条件执行不同的操作。在Shell脚本中,if语句通常与条件运算符结合使用,以实现对变量的比较和操作的流程控制。

if语句的基本格式如下:

```bash

if condition

then

command1

command2

...

commandN

fi

```

在这个模板中,condition表示需要进行比较的条件表达式,如果条件为真,那么if语句中then后面的所有命令都会被执行。

if语句通常需要和else语句或者elif语句一起使用,这样可以实现多条件分支。一个if语句可以拥有多个elif语句和一个else语句,如下所示:

```bash

if condition1

then

command1

elif condition2

then

command2

elif condition3

then

command3

else

command4

fi

```

在这个模板中,如果condition1为真,则会执行command1;如果condition1为假但condition2为真,则会执行command2;如果condition1和condition2都为假但condition3为真,则会执行command3;如果以上所有条件都为假,则会执行command4。

在实际的Shell脚本开发中,if语句和逻辑运算符经常被一起使用。以下是Shell中可以使用的逻辑运算符:

- `-eq`:等于

- `-ne`:不等于

- `-gt`:大于

- `-lt`:小于

- `-ge`:大于等于

- `-le`:小于等于

- `!`:非

- `-a`:逻辑且

- `-o`:逻辑或

下面是一个示例,展示了如何在Shell中使用if语句和逻辑运算符:

```bash

#!/bin/bash

自学LinuxShell12.1-结构化命令if-then

⾃学LinuxShell12.1-结构化命令if-then

12.1-结构化命令if-then

许多程序要求对shell脚本中的命令施加⼀些逻辑流程控制。有⼀类命令会根据条件使脚本跳过某些命令。这样的命令通常称为结构化命令

(structured command)。

1. 基本的结构化if-then语句

结构化命令允许你改变程序执⾏的顺序。在bash shell中有不少结构化命令,基本的结构化命令就是if-then语句,if-then语句可以有两种格式

第⼀种:

1 if command

2 then

3 commands

4 fi

第⼆种:

1 if command;then

2 commands

3 fi

bash shell的if语句会运⾏if后⾯的那个命令。

如果该命令的退出状态码是0 (该命令成功运⾏),位于then部分的命令就会被执⾏。

如果该命令的退出状态码是其他值,then部分的命令就不会被执⾏,bash shell会继续执⾏脚本中的下⼀个命令。

then的部分可以不⽌⼀条命令,会将这些命令当成⼀个块

如果该命令的退出状态码是0 (该命令成功运⾏),位于then部分的所有命令就会被执⾏。

如果该命令的退出状态码是其他值,then部分的所有命令就不会被执⾏,bash shell会继续执⾏脚本中的下⼀个命令。

fi语句⽤来表⽰if-then 语句到此结束。

举例1

举例2

举例3

举例4

if语句⾏使⽤grep命令在/etc/passwd⽂件中查找某个⽤户名当前是否在系统上使⽤。如果有⽤户使⽤了那个登录名,脚本会显⽰⼀些⽂本信息并

列出该⽤户HOME⽬录的bash⽂件。

但是,如果将testuser变量设置成⼀个系统上不存在的⽤户,则什么都不会显⽰。

2. if-then-else语句

1 if command

2 then

3 command

4 else

5 command

6 fi

当if语句中的命令返回零退出状态码时,会执⾏then部分中的命令

shell if语句案例

shell if语句案例

摘要:

1.Shell if 语句概述

2.Shell if 语句案例一:判断文件是否存在

3.Shell if 语句案例二:判断文件是否可读

4.Shell if 语句案例三:判断目录是否存在

5.Shell if 语句案例四:综合案例

正文:

【Shell if 语句概述】

在 Shell 脚本编程中,if 语句是一种条件判断语句,可以根据指定的条件执行相应的操作。if 语句的基本语法结构如下:

```

if 条件; then

操作

elif 条件; then

操作

else

操作

fi

```

【Shell if 语句案例一:判断文件是否存在】 在 Shell 脚本中,我们可以使用 if 语句判断一个文件是否存在。下面是一个示例:

```bash

#!/bin/bash

file="example.txt"

if [ -f "$file" ]; then

echo "文件存在"

else

echo "文件不存在"

fi

```

【Shell if 语句案例二:判断文件是否可读】

我们还可以使用 if 语句判断一个文件是否可读。以下是一个示例:

```bash

#!/bin/bash

file="example.txt"

if [ -r "$file" ]; then

echo "文件可读"

else

echo "文件不可读"

fi

``` 【Shell if 语句案例三:判断目录是否存在】

同样地,我们也可以使用 if 语句判断一个目录是否存在。

shell条件结构之if语句使用总结

shell条件结构之if语句使⽤总结

⽂章⽬录

#条件判断的格式

[ exp ]

[[ exp ]]

test exp

注意: exp 与 “[”、"]"括号之间必须要有空格,否则会报语法错误;

1. [ exp ] 与 [[ exp ]]的区别,本⽂仅讨论[ exp ],⽽在[[ exp ]]模式下,额外⽀持指令,但是同样都需要空格;

2. &&、|| 分别作为逻辑与、逻辑或的运算

3. [[ 1 == 1 ]] 结果为真

#条件判断的类型

条件判断的类型有三种:整数判断,字符判断,⽂件判断

条件逻辑表达式:-a : and 逻辑与

-o : or 逻辑或

! : nor 逻辑⾮

##整数判断

-eq #equal 相等

-ne #not equal 不相等

-gt #greater than ⼤于

-lt #less than ⼩于

-ge #greater or equal ⼤于或等于

-le #less or equal ⼩于或等于

##字符判断

-z #zero 当前字符串是否为空

-n #not zero 当前字符串是否不为空

== 两端字符串是否相等

!= 两端字符串是否不相等

> 长度是否⼤于

< 长度是否⼩于

注意:“< ”与 “> ”做字符串⽐较的时候,在[ exp ] 情况下需要需要输⼊ “<” 或者 “>” 作为转义,或者使⽤ [[ > exp ]] 模式可以直接使

⽤“< ”与 “> ”作为判断符号使⽤。

STR1="HELLO"STR2="HELL"

if [[ $STR1 > $STR2 ]];then echo "$STR1 > $STR2"fi

if [ $STR1 \> $STR2 ];then echo "$STR1 > $STR2"fi

##⽂件判断

-e #exit 判断⽂件是否存在

-f #if file 判断是否是⽂件

-d #dir 判断是否是路径

-r 判断⽂件是否可读

-w 判断⽂件是否可写

-x 判断⽂件是否可执⾏

-L 判断⽂件是否为符号链接

shell脚本中,关于if,以及条件判断

shell脚本中,关于if,以及条件判断

#!/bin/shSYSTEM=`uname -s` #获取操作系统类型if [ $SYSTEM = "Linux" ] ; then #如果是linux的话打印linux字符串echo "Linux" elif [ $SYSTEM = "FreeBSD" ] ; then echo "FreeBSD" elif [ $SYSTEM = "Solaris" ] ; then echo "Solaris" else echo "What?" fi #ifend

基本上和其他脚本语⾔⼀样。没有太⼤区别。不过值得注意的是。[]⾥⾯的条件判断。

“=”既能⽤于字符串的判断,也能⽤于数字的判断

1、字符串判断

str1 = str2 当两个串有相同内容、长度时为真

str1 != str2 当串str1和str2不等时为真

-n str1 当串的长度⼤于0时为真(串⾮空)

-z str1 当串的长度为0时为真(空串)

str1 当串str1为⾮空时为真

2、数字的判断

int1 -eq int2 int1 = int2 ···········两数相等为真

int1 -ne int2 int1 != int2 两数不等为真

int1 -gt int2 int1⼤于int2为真

int1 -ge int2 int1⼤于等于int2为真

int1 -lt int2 int1⼩于int2为真

int1 -le int2 int1⼩于等于int2为真

3、⽂件的判断

-r file ⽤户可读为真

-w file ⽤户可写为真

-x file ⽤户可执⾏为真

-f file ⽂件为正规⽂件为真

-d file ⽂件为⽬录为真

-c file ⽂件为字符特殊⽂件为真

-b file ⽂件为块特殊⽂件为真

-s file ⽂件⼤⼩⾮0时为真

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档