Linux编写shell脚本if for while

Linux编写shell脚本if for while
使用if条件语句
If语句好处:可以根据特定条件来决定是否执行某项操作,当满足不同条件时执行不同操作,
相关条测试操作
Test 条件表达式
[ 条件表达式] [ ] 方括号与条件表达式需要用空格进行分隔
1.测试文件状态
-d 是否为目录
-e 文件是否存在
-f 是否为文件
-r 是否有读取的权限
-w 是否有写入权限
-x 是否有执行权限
-L 是否为链接文件
2. 整数值比较
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
3. 字符串比较
= 匹配
!= 不匹配
-z是否为空
!用于取反
4逻辑测试
&&逻辑与(前后两个条件都为真时,结果才为真)
||逻辑或(有一个条件成立,结果即为真)!逻辑非(指定条件不成立,结果为真)if语句的结构
1.单分支的if语句
if条件测试命令
then
命令序列
fi
条件成立
执行then后一条或多条命令(命令序列)直到fi 表示结束
条件不成立
直接执行fi
条件成立
执行then后的一条或多条命令(命令序列)条件不成立
执行else后的一条或多条命令
直到fi
2.双分支的if语句
if 条件测试命令
then
命令序列1
else
命令序列2
fi
条件成立
执行then后的一条或多条命令(命令序列)
条件不成立
执行else后的一条或多条命令
直到fi
3.多分支的if语句(更多使用case语句来实现)
根据if语句条件测试命令的两种状态分别进行操作,嵌套使用,
条件1为真:执行then后的命令直到fi
条件1为假:执行elif后的条件2
条件2为真,执行命令2,直到fi
为假,执行else后的命令3直到fi
if 条件测试命令1
then
命令序列1
elif 命令测试条件2
then
命令序列2
else
命令序列3
fi
根据if语句条件测试命令的两种状态分别进行操作,嵌套使用,
条件1为真:执行then后的命令直到fi
条件1为假:执行elif后的条件2
条件2为真,执行命令2,直到fi
为假,执行else后的命令3直到fi
将case后边的变量只与模式1、模式2 ………..等进行逐一比较,直到找到与之匹配的值,然后执行该模式下的命令序列,当遇到;;后跳转至esac后结束分支
4.case语句(适用于需要进行多重分支的情况)
case 变量值in
模式1)
命令序列1
;;
模式2)
命令学列2
;;
..........
*)
esac
将case后边的变量只与模式1、模式2 ………..等进行逐一比较,直到找到与之匹配的值,然后执行该模式下的命令序列,当遇到;;后跳转至esac后结束分支
使用in关键字为用户自定义变量设置了一个取值列表(以空格分隔的多个值),for语句第一次执行时,先将列表中的第一个值赋给变量,然后执行do后边的命令序列,再将第二个取值赋给该变量,然后执行do后边的命令序列,一直循环,直到列表中的所有值都已经用完,跳转至done
for语句结构
for 变量名取值列表
do
命令序列
done
使用in关键字为用户自定义变量设置了一个取值列表(以空格分隔的多个值),for语句第一次执行时,先将列表中的第一个值赋给变量,然后执行do后边的命令序列,再将第二个取值赋给该变量,然后执行do后边的命令序列,一直循环,直到列表中的所有值都已经用完,跳转至done
条件为真执行do 后边的命令然后返回到while再次判断,条件为真,继续执行do后的命令序列,直到条件为假,跳转到done语句,结束循环
while语句结构
while 条件测试命令
do
命令序列
done
条件为真执行do 后边的命令然后返回到while再次判断,条件为真,继续执行do后的命令序列,直到条件为假,跳转到done语句,结束循环
until循环
与while循环结构非常类似,只不过,until是当条件不成立时进行循环,until 命令测试条件
do
命令序列
Done
shift语句(迁移位置变量)
执行shift命令后,位置变量($1 -----$9)中的参数会依次向左传递
循环控制语句
break 中断:跳出当前所在的循环,并不跳出程序
continue 继续:暂停本次循环,跳转至循环语句顶部重新测试条件
shell函数的定义和调用
定义
Function 函数名{
命令序列
}
函数名(){
命令序列

调用:直接调用函数名称即可。

合集下载

linux shell 判断语句

linux shell 判断语句

linux shell 判断语句Linux shell 是一种命令行解释器,它能够执行用户输入的命令并返回相应的结果。

在使用 Linux shell 进行脚本编程时,判断语句是非常重要的,它可以帮助程序根据不同的条件执行不同的操作。

下面列举了十个常用的 Linux shell 判断语句,供大家参考。

1. if 判断语句if 判断语句用于根据条件的真假执行不同的代码块。

语法如下:```shellif [ condition ]; then# code blockfi```其中`condition` 是一个条件表达式,如果条件为真,则执行`code block` 中的代码。

2. if-else 判断语句if-else 判断语句用于根据条件的真假执行不同的代码块。

语法如下:```shellif [ condition ]; then# code block 1else# code block 2fi```当`condition` 为真时,执行`code block 1`,否则执行`code block 2`。

3. if-elif-else 判断语句if-elif-else 判断语句用于根据多个条件的真假执行不同的代码块。

语法如下:```shellif [ condition1 ]; then# code block 1elif [ condition2 ]; then# code block 2else# code block 3fi```当 `condition1` 为真时,执行 `code block 1`;当 `condition1` 为假且 `condition2` 为真时,执行 `code block 2`;否则执行 `code block 3`。

4. case 判断语句case 判断语句用于根据不同的值执行不同的代码块。

语法如下:case $variable invalue1)# code block 1;;value2)# code block 2;;*)# code block 3;;esac```根据 `$variable` 的值,执行相应的代码块。

linux sh循环参数

linux sh循环参数

在Linux的shell脚本中,你可以使用循环来重复执行一段代码。

这可以通过几种不同的方式来实现,包括for循环、while循环和until循环。

下面我将解释如何在shell脚本中使用这些循环,以及如何处理循环参数。

1. for 循环:这是一个基本的for循环示例,它使用一个数字序列作为参数:bash`#!/bin/shfor i in {1..5}; doecho "Iteration $i"done`你也可以使用一个数组作为参数:bash`#!/bin/sharray=("apple" "banana" "cherry")for fruit in "${array[@]}"; doecho "I like $fruit"done`2. while 循环:while循环会一直执行,直到给定的条件不再为真。

以下是一个示例,其中循环会打印数字1到5:bash`#!/bin/shi=1while [ $i -le 5 ]doecho "Iteration $i"i=$((i+1))done`3. until 循环:until循环会一直执行,直到给定的条件为真。

以下是其与while循环的相似示例:bash`#!/bin/shi=1until [ $i -gt 5 ]doecho "Iteration $i"i=$((i+1))done`4. 处理命令行参数:如果你想在脚本中使用命令行参数,你可以简单地通过在脚本中使用1、2、$3等来引用它们。

例如:bash`#!/bin/shecho "First argument: $1"echo "Second argument: $2"````如果你运行这个脚本并传入两个参数,它会分别打印出这两个参数。

linuxshell编程实验总结

linuxshell编程实验总结

linuxshell编程实验总结Linux Shell编程实验总结在Linux系统中,Shell编程是一种强大的工具,可以帮助用户进行自动化任务、脚本编写和系统管理。

通过学习和实践Shell编程,我深深地体会到了其在提高工作效率和简化任务流程方面的重要性。

在这篇文章中,我将总结我在Linux Shell编程实验中的经验和心得。

一、实验概述在这次Linux Shell编程实验中,我学习并应用了Shell脚本语言,掌握了基本的语法和命令,并通过实验来加深对Shell编程的理解和掌握。

实验的内容包括变量的定义和使用、条件语句的实现、循环结构的应用等。

二、变量的定义和使用在Shell编程中,变量的定义和使用是非常重要的一部分。

通过实验,我学会了如何使用“=”符号来给变量赋值,并可以在后续的命令中使用这个变量。

在实践中,我发现给变量加上$符号可以获取变量的值,并且可以在字符串中插入变量。

这在编写脚本时非常有用,可以将一些可变的部分定义为变量,提高程序的可读性和可维护性。

三、条件语句的实现条件语句在Shell编程中起到了重要的作用,可以根据不同的条件执行不同的命令。

通过实验,我掌握了Shell中常用的条件判断语句,如if语句和case语句。

在编写条件语句时,我注意到要使用适当的比较运算符(如“-eq”表示等于、“-ne”表示不等于等),并在语句块的结尾加上“fi”或“esac”来结束条件语句的定义。

四、循环结构的应用在实践中,我发现循环结构是Shell编程中非常重要的一部分,可以重复执行特定的任务。

通过实验,我掌握了两种常见的循环结构:for循环和while循环。

在编写循环结构时,我注意到要使用适当的循环控制语句,如“break”可以用于跳出循环,“continue”可以用于跳过当前循环中的剩余命令,继续下一次循环。

五、实验心得通过这次实验,我深刻认识到了Shell编程在自动化任务和脚本编写方面的重要性。

Shell编程既可以简化日常工作中的重复性任务,又可以提高工作效率和减少出错的可能性。

linuxshell常用循环与判断语句(for,while,until,if)使用方法

linuxshell常用循环与判断语句(for,while,until,if)使用方法

linuxshell常⽤循环与判断语句(for,while,until,if)使⽤⽅法shell的循环主要有3种,for,while,untilshell的分⽀判断主要有2种,if,case⼀,for循环#!/bin/bashfor file in $(ls /tmp/test/mytest |grep sh) //for in格式是shell for的基本格式,根js的for in类似do //循环开始你就把它当成{echo $filedone //循环结束你就把它当成}for ((i=0;i<10;i++)) //注意是双⼩括号,由于受其他语⾔的影响,很容易搞错doecho -n $idoneecho \ //输出换⾏for i in 0 1 2 3 4 5 6 7 8 9doecho -n $idoneecho \for i in "0 1 2 3 4 5 6 7 8 9" //这个根上⾯是有区别的,这个循环只循环了⼀次,双引号⾥⾯只是⼀个变量doecho -n $idoneexit 0⼆,while循环#!/bin/bashi=0while ((i<10))doecho $i((i += 1))donei=0while [ $i -lt 10 ] //注意括号内侧⼆边的空格doecho $ilet "i+=1" //加1doneexit 0三,until循环#!/bin/bashEND_CONDITION=enduntil [ "$var1" = "$END_CONDITION" ] //读取的变量根设定的变量相等时退出循环,不然永远循环doecho "Input variable #1 "echo "($END_CONDITION to exit)"read var1echo "variable #1 = $var1"echodoneexit 0四,if语句#!/bin/bashecho "Input a number #1 "read numecho "variable #1 = $num"if [ $num -lt 60 ] //注意lt前⾯的-,很容易忘的thenecho "you are not pass"elif [ $num -lt 70 ] && [ $num -ge 60 ] //多个条件的判断thenecho "pass"elif [[ $num -lt 85 && $num -ge 70 ]] //如果放在⼀起,要注意是双⽅括号,不要写成[ $num -lt 85 && $num -ge 70 ] thenecho "good"elif (( $num <= 100 )) && (( $num >= 85 )) //对于有语⾔基础的⼈来说,这种写法让⼈觉得很舒服,不要忘了是双⼩括号thenecho "very good"elseecho "num is wrong"fi //if要有结束标签的,根XML很像,不闭合,就报错exit 0五,case语句#!/bin/shcase $1 instart)echo "start ok";; //注意⼀点,要注意是双分号stop)echo "stop ok";;restart)echo "restart ok";;*)echo "no param";;esac //注意闭合标签exit 0[root@krlcgcms01 forif]# sh c1.sh stopstop ok这篇⽂章就先介绍到这,下⾯将为⼤家分享更好的内容。

Linux操作系统实习指导书

Linux操作系统实习指导书

Linux操作系统实习指导书一、实训目的重点强化shell编程的多种数值计算、条件测试与比较、if语句、case语句以及数组的应用。

重点强化while、for、until循环语句的运用。

二、实训内容【实训1.1】编写一个shell脚本,判断登录的用户是否是某个账号。

#!/bin/bash# 判断登录的用户是否是fz# cut 以某种方式按照文件的行进行分隔# -d自定义分隔符,默认为制表符# -f 与-d一起使用,指定显示哪个区域。

test=$(env | grep "USER" | cut -d "=" -f 2)if [ "$test" == fz ]thenecho "Current user is fz."elseecho "Current user is not fz."fi【实训1.2】编写一个shell脚本,判断分区使用率。

#!/bin/bash# 用来判断sda2这个盘的使用率# 注意awk命令及cut命令的用法及区别,务必熟练test=$(df -h | grep sda2 | awk '{print $5}' | cut -d "%" -f 1)if [ $test -ge 8 ];thenecho "/ is full"elseecho "/ is not full"fi【实训1.3】判断输⼊的是否是⼊个⼊录。

#!/bin/bashread -t 30 -p "Please input a directory: " dirif [ -d "$dir" ]thenecho "$dir is a directory"elseecho "$dir is a not directory"fi【实训1.4】编写一个shell脚本,判断用户输入的是什么文件。

shell中的循环语句

shell中的循环语句

shell中的循环语句1. 嘿,你知道吗?Shell 中的循环语句就像是一个不知疲倦的小机器人,能帮咱们重复做很多事!比如说,要打印 1 到 10 这几个数,用for 循环就能轻松搞定:for ((i=1; i<=10; i++)); do echo $i; done 。

这难道不神奇吗?2. 亲,想象一下,Shell 里的循环语句是你的得力助手!就像一个超级听话的小伙伴,你让它干啥就干啥。

比如你想把一个文件夹里的所有文件名字都列出来,用 while 循环就能实现:ls | while read file; do echo $file; done 。

是不是很方便呀?3. 朋友,Shell 中的循环语句那可真是个宝贝!它就像一把万能钥匙,能打开好多复杂任务的大门。

比如说,要计算 1 到 100 的和,用 until循环:sum=0; i=1; until [ $i -gt 100 ]; do sum=$((sum + i)); i=$((i + 1)); done; echo $sum 。

这难道还不够厉害吗?4. 嗨呀!Shell 里的循环语句简直是神器!就好比一个永不停歇的小马达。

你看,要是想把一个数组里的元素逐个打印出来,用 for 循环就行:arr=(1 2 3 4 5); for item in "${arr[@]}"; do echo $item; done 。

是不是超简单?5. 亲,你想想,Shell 中的循环语句是不是像一个勤劳的小蜜蜂?不停歇地为我们工作。

比如要找出文件中包含特定字符串的行,用 while循环:grep 'keyword' file.txt | while read line; do echo $line; done 。

这多省事啊!6. 嘿,朋友!Shell 里的循环语句可是大功臣啊!如同一位忠实的卫士。

像要统计一个文件里有多少行,用 while 循环:count=0; while read line; do ((count++)); done < file.txt; echo $count 。

linux中for语句和while语句计算1-100的和

linux中for语句和while语句计算1-100的和1、for语句[root@centos7 test2]# cat test.sh#!/bin/bashsum=0for i in `seq $1`dolet sum+=$idoneecho "the sum of 1-$1 is: $sum"[root@centos7 test2]# bash test.sh 100the sum of 1-100is: 5050[root@centos7 test2]# bash test.sh 5the sum of 1-5is: 15[root@centos7 test2]# cat test.sh#!/bin/bashsum=0read -p "please input an integer: " numif [[ $num =~ [^0-9] ]]; thenecho "input error."exit 10elif [ $num -eq 0 ]; thenecho "input error."exit 20elsefor i in `seq 1 $num`; dosum=$[$sum+$i]doneecho $sumfiunset sum[root@centos7 test2]# bash test.shplease input an integer: abcdinput error.[root@centos7 test2]# bash test.shplease input an integer: 0input error.[root@centos7 test2]# bash test.shplease input an integer: -3input error.[root@centos7 test2]# bash test.shplease input an integer: 10050501-100的和[root@centos7 test2]# for ((i=1,sum=0; i<=100; i++)); do let sum+=$i; done[root@centos7 test2]# echo $sum50501-100中偶数的和[root@centos7 test2]# for ((i=1,sum=0; i<=100; i++)); do [[ $[i%2] -eq 0 ]] && sum=$[$sum+$i]; done[root@centos7 test2]# echo $sum25501-100中奇数的和[root@centos7 test2]# for ((i=1,sum=0; i<=100; i++)); do [[ $[i%2] -eq 1 ]] && let sum+=$i; done [root@centos7 test2]# echo $sum25002、while语句[root@centos7 test2]# cat test.sh#!/bin/bashsum=0a=1while [ $a -le $1 ]dolet sum+=$alet a++doneecho "the sum of 1-$1 is: $sum"[root@centos7 test2]# bash test.sh 100the sum of 1-100is: 5050[root@centos7 test2]# bash test.sh 3the sum of 1-3is: 61-100内所有奇数的和[root@centos7 test2]# cat test.sh#!/bin/bashi=1sum=0while [ $i -le 100 ]; doif [ $[i%2] -ne 0 ]; thenlet sum+=$ilet i++elselet i++fidoneecho $sum[root@centos7 test2]# bash test.sh25001-100内所有偶数的和[root@centos7 test2]# cat test.sh#!/bin/bashi=1sum=0while [ $i -le 100 ]; doif [ $[i%2] -eq 0 ]; thensum=$[$sum+$i]let i++elselet i++fidoneecho $sumunset sum[root@centos7 test2]# bash test.sh2550。

shell中的for、while循环及if语句

shell中的for、while循环及if语句shell与其他语⾔⼀样也⽀持for、while循环for循环的⼀般格式如下:1 #!/bin/sh23for变量in列表4do5 command 16 command 27 command 18 .........9 command n10done列表是⼀组值(数字、字符串等)组成的序列,每个值通过空格分隔。

每循环⼀次,就将列表中的下⼀个值赋给变量。

列表也可以是⼀个⽂件:in 列表是可选的,如果不⽤它,for 循环使⽤命令⾏的位置参数。

1 #!/bin/sh23for line in12345674do5echo"line is $line"6done结果:[root@localhost 1st]# sh test.shline is 1line is 2line is 3line is 4line is 5line is 6line is 7下⾯⽤for循环读⼀个⽂件:查看⽂件内容1 [root@localhost 1st]# cat test.txt2 hello3 wolrd4 hello5 shell6 [root@localhost 1st]#code:1 #!/bin/sh23 FILE=./test.txt45for line in $(<$FILE)6do7echo"line is: $line"8doneResults:1 [root@localhost 1st]# sh xx.sh2 line is: hello3 line is: wolrd4 line is: hello5 line is: shell6 [root@localhost 1st]#while循环的⼀般格式如下:1while command2do34 statement56done3 i=04sum=05while [ $i -le 100 ]6do7sum=$(($sum + $i))8 i=$(($i + 1))9done10echo"sum is $sum"rusults:1 [root@localhost 1st]# sh xx.sh2sum is 50503 [root@localhost 1st]#if语句的⼀般格式如下:1if ....; then2 ....3elif ....; then4 ....5else6 ....7fiif 条件语句:⽂件表达式:1 [ -f "somefile" ] : 判断是否是⼀个⽂件2 [ -x "/bin/ls" ] : 判断/bin/ls是否存在并有可执⾏权限3 [ -n "$var" ] : 判断$var变量是否有值4 [ "$a" = "$b" ] : 判断$a和$b是否相等5 -r file ⽤户可读为真6 -w file ⽤户可写为真7 -x file ⽤户可执⾏为真8 -f file ⽂件为正规⽂件为真9 -d file ⽂件为⽬录为真10 -c file ⽂件为字符特殊⽂件为真11 -b file ⽂件为块特殊⽂件为真12 -s file ⽂件⼤⼩⾮0时为真13 -t file 当⽂件描述符(默认为1)指定的设备为终端时为真字符串表达式:[string string_operator string]这⾥string_operator可为如下⼏种:1 = 两个字符串相等。

Linux13:shell脚本基本命令

Linux13:shell脚本基本命令shell脚本基本命令输出命令echo输出命令echo,基本模式就是echo [选项] [输出内容]输出内容如果包含空格,则必须将内容⽤双引号括起来。

选项-e可以使输出语句⽀持反斜线转义。

加⼊退格后就不会显⽰退格符左边的⼀个字符。

ascii码表中有对应的⼋进制和⼗六进制表⽰法,所以可以表⽰对应的字符。

显⽰环境变量的值:echo ${PATH}或echo $PATH,如果⼀个变量没有被设定,那么就什么都不返回。

颜⾊输出如将abcd⽤红⾊打印:echo -e "\e[1;31m abcd \e[0m"其中\e[1的意思是开启颜⾊输出,⽽\e[0m是结束颜⾊输出,31m代表红⾊,abcd是输出内容,其他颜⾊如下:第⼀个脚本与脚本执⾏⽅式新建⼀个脚本hello.sh:#!/bin/bash#the first programecho "hello world"exit 0其中第⼀⾏是声明,不是注释,不能省略,这是在指定使⽤哪个shell,如果没有这⾏有的程序可能⽆法执⾏。

第⼆⾏#开头的是注释,第四⾏是命令。

最后⼀⾏在设置回传值,在执⾏完该脚本后,执⾏echo $?就能查看这个值,可以通过这个⾃定义错误信息。

在脚本中有需要时要重新定义⼀下PATH环境变量,以便直接使⽤⼀些外部命令⽽不是写绝对路径:PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/module/jdk1.8.0_144/bin:/opt/module/hadoop-2.7.2/bin:/opt/module/hadoop-2.7.2/sbin:/root/bin export PATH执⾏shell脚本要先赋予其可rx权限:chomd 755 hello.sh然后再执⾏./hello.sh这⾥也可以⽤绝对路径执⾏。

Linux系统自动化运维脚本使用Shell脚本实现对Linux系统运维工作的自动化执行

Linux系统自动化运维脚本使用Shell脚本实现对Linux系统运维工作的自动化执行Linux系统的运维工作对于系统管理员来说是非常繁琐而重要的,为了提高效率和减少人为错误,自动化运维脚本被广泛使用。

而Shell脚本则是一种强大的工具,可以通过编写脚本来实现对Linux系统的自动化运维工作。

本文将通过介绍Shell脚本的基本用法和示例,探讨如何使用Shell脚本来实现对Linux系统的自动化运维。

一、Shell脚本的基本概念和用法Shell是一种命令行解释器,常用的有Bash、Csh、Ksh等。

Shell脚本是一系列Shell命令的集合,可以通过编写脚本来实现对系统的自动化操作。

下面是一些Shell脚本的基本用法:1. Shebang每个Shell脚本的第一行都需要指定Shebang,即告诉系统使用哪种Shell执行该脚本。

常见的Shebang是#!/bin/bash。

2. 变量的定义和使用Shell脚本使用变量可以方便地存储和操作数据。

变量的定义格式为:变量名=值,例如:name="John"。

使用变量时需要在变量名前加上美元符号,例如:echo $name。

3. 条件语句可以使用条件语句来实现根据条件执行不同的操作。

常见的条件语句有if语句和case语句。

例如:```if [ $num -gt 10 ]; thenecho "The number is greater than 10."fi``````case $fruit in"apple")echo "It's an apple.";;"orange")echo "It's an orange.";;*)echo "Unknown fruit.";;esac```4. 循环语句循环语句可以用来重复执行一段代码。

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