SHELL编程入门2

IF 条件语句

[ -d /root ] :判断目录是否存在

[ -f /etc/passwd ]:判断文件是否存在

[ $NAME == 'test' ]:判断变量

echo $? 值为0为正常,非0为不正常。

 if then 语法

if condition1

then

开始执行 condition1 对应的任务

fi

例子:

 

代码1:

#!/bin/bash

NAME=abc

if [ $NAME == 'aaa' ]

 then

 echo $NAME

fi

修改后:

#!/bin/bash

NAME=abc

if [ $NAME == 'abc' ]

 then

 echo $NAME

fi

 

 if else 语法

条件成立执行then,否则执行else语句

if 条件1

then

条件成立,执行条件对应的语句

else

条件不成立,执行这里的语句

fi

例子:

 代码:

#!/bin/bash

NAME=abc

if [ $NAME == 'abc1' ]

 then

 echo $NAME

 else

 echo "error"

fi

 

if elif else 语法 

 

通过elif可以定义多个条件匹配

if 条件1

then

条件1 语句

elif

then

条件2 语句

elif

then

条件3 语句

else

上述条件都不成立 语句

fi

例子: 

 

 代码;

#!/bin/bash

NAME=abc

if [ $NAME == 'abc1' ];then

 echo $NAME

 elif [ $NAME == 'abc2' ];then

 echo "my name is $NAME"

 elif [ $NAME == 'abc3' ];then

 echo "my name is $NAME"

 else

 echo "error"

fi

嵌套if

比较运算符:不支持字符串,仅支持数值类型

-eq 等于

-lt 小于

-gt 大于

具体可以通过 man test来查看

 

代码:

#!/bin/bash

NAME=abc

AGE=20

if [ $NAME == 'abc' ];then

 echo $NAME

 if [ $AGE -lt 30 ];then

 echo "$AGE < 30"

 else

 echo "$AGE >= 30"

 fi

fi

 

CASE 语句

例子:

以下是一个使用 case 语句的 Linux shell 脚本示例,用于根据用户输入的数字输出对应的星期几名称:

 

用户输入数字后,脚本会根据 case 语句中的不同分支输出对应的星期几名称。如果用户输入的数字不在 1-7 范围内,则会输出错误提示信息。 

 代码:

#!/bin/bash

echo "Please input num 1-7:"

read num

case $num in

 1)

 echo "Monday"

 ;;

 2)

 echo "Tuesday"

 ;;

 3)

 echo "Wednesday"

 ;;

 4)

 echo "Thursday"

 ;;

 5)

 echo "Friday"

 ;;

 6)

 echo "Saturday"

 ;;

 7)

 echo "Sunday"

 ;;

 *)

 echo "Error! Please input num 1-7"

 ;;

esac

 

FOR 循环语句

语法:

for i in 1 2 3

do

echo $i

done

例子: 

 

代码:

#!/bin/bash

for i in 1 2 3

do

 echo $i

done

批量复制文件 

 

代码:

#!/bin/bash

for dir in /etc /tmp /mnt

do

 touch $dir/hehe.txt

 ls -l $dir/hehe.txt

done

以下是一个使用 for 循环的 Linux shell 脚本示例,用于批量重命名文件夹中的所有文件: 

[root@user01 ~]# mkdir abc
[root@user01 ~]# touch abc
[root@user01 ~]# touch abc/{a,b,c}{1,2,3}.txt
[root@user01 ~]# ls abc/
a1.txt  a2.txt  a3.txt  b1.txt  b2.txt  b3.txt  c1.txt  c2.txt  c3.txt
[root@user01 ~]#

编写脚本 

 

脚本会先要求用户输入要重命名的文件夹路径和要添加的前缀,然后使用 for 循环遍历该文件夹中的所有文件。如果文件是普通文件,就使用 mv 命令将其重命名为添加了前缀的新文件名,并输出重命名信息。最后输出重命名完成的提示。

代码:

#!/bin/bash

echo "Please input directory name:"   /test----选择路径

read path

echo "Please input prefix:" 0416-----加上前缀

read prefix

for file in $(ls $path/)

do

 if [ -f "$path/$file" ]

 then

 mv "$path/$file" "$path/$prefix$file"

 echo "rename $path/$file is $path/$prefix$file."

 fi

done

echo "Rename completed!"

以下是一个使用 for 循环的 Linux shell 脚本示例,用于输出九九乘法表:

 

 脚本使用两个嵌套的 for 循环,外层循环控制乘法表的行数,内层循环控制列数。其中,为了避免输出重复的乘积,内层循环只输出列数小于等于行数的乘积。最后使用 echo 命令输出每行的内容。运行脚本后,即可在终端中输出九九乘法表。

代码:

#!/bin/bash

for i in {1..9}

do

 for j in {1..9}

 do

 if [ $j -le $i ]

 then

 echo -n "$j*$i=$((j*i)) "

 fi

 done

 echo ""

done

 

WHILE 循环

以下是一个使用 while 循环的 Linux shell 脚本示例,用于实现猜数字小游戏:

脚本首先随机生成一个 1-100 之间的整数,并要求用户输入猜测的数字。然后使用 while 循环进行猜测,每次判断用户输入的数字与随机数的大小关系,如果猜小了就输出提示信息让用户再次尝试,猜大了同理,直到猜对为止。最后输出猜测的次数。运行脚本后,即可在终端中玩猜数字小游戏。

 

Linux shell 脚本中,$RANDOM 是一个系统变量,用于生成一个 0-32767 之间的随机整数。为了得到 1-100 之间的随机整数,可以使用 $RANDOM%100+1 的表达式,该表达式会先将 $RANDOM 生成的随机整数对 100 取模,得到 0-99 之间的随机整数,然后再加上 1,得到 1-100 之间的随机整数。

 

 代码:

#!/bin/bash

echo "Welcome!"

echo "Please input num between 1-100:"

num=$((RANDOM%100+1))

guess=0

count=0

while [ $guess -ne $num ]

do

 read guess

 if [ $guess -lt $num ]

 then

 echo "small...again"

 elif [ $guess -gt $num ]

 then

 echo "bigger...again"

 else

 echo "Congratulations!"

 fi

 count=$((count+1))

done

echo "Guess Times:$count"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值