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简单命令)
操作系统实验报告
班级: 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条件判断总结
⼀、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是一种脚本语言,常用于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语句的语法结构如下所示:
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命令是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语句通常与条件运算符结合使用,以实现对变量的比较和操作的流程控制。
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)指定的设备为终端时为真
