【Shell脚本(二)】运算符,命令和文件

本文详细介绍了Shell脚本的基础知识,包括算数、关系、布尔、逻辑和字符串运算符的使用方法,以及if语句、循环结构、while语句、case语句和函数的语法示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1介绍

本节介绍了shell脚本的运算符,命令和文件。

2运算符

2.1算数运算符

原生bash不支持算数运算,所以需要借助其他的一些工具,此处用到了expr

#!/bin/bash
a=20
b=10
value=`expr $a + $b`
echo $value

结果为30。需要注意的是,表达式外侧的反引号(tab键上方),以及在’+’两侧的变量必须与其有空格,如果写成

value=`expr $a+$b`

此例输出的结果为20+10,而不是30

同理+-*/%都是一样的写法,另外,乘号(*)前边必须加反斜杠(\)才能实现乘法运算

,而==,!=则是下面这样:

#!/bin/bash
a=20
b=10
if [ $a != $b ]
then
echo "False"
fi

一定要十分注意’[]’与变量之间的空格和’!=’与变量之间的空格,如果省略了空格就会报错。赋值语句’=’与其他语言一样正常使用即可。

2.2关系运算符


此处没使用<’这种符号,而是使用上面这种字符,同样也要注意空格的问题。

#!/bin/bash
a=20
b=10
if [ $a -gt $b ]
then
echo "a大于b"
else 
echo "a小于b"
fi

2.3布尔运算符



#!/bin/bash
a=20
b=10
if [ $a -gt $b -a  $a -lt 30 ]
then
echo "True"
else 
echo "False"
fi

[ $a -gt $b -a  $a -lt 30 ]表示为a大于b,且小于30,结果为true

2.4逻辑运算符

&& ||这两个没有什么可说的,2.3的例子,也可以写成if [[ $a -gt $b && $a -lt 30 ]],注意是两个[]

2.5字符串运算符


关于-z-n等用法

#!/bin/bash
c=Tom
if [ -z $c ]
then 
echo "c长度为0"
else
echo "c长度不为0"
fi

2.6文件测试运算符

下图的整理来自菜鸟教程网


File是指所判断的文件路径,结果为”文件可读”:

#!/bin/bash
file="/home/ac/桌面/Shell脚本测试文件/04.sh"
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi

3命令

Echo命令:

也就是输出字符串,在双引号内可以使用转义运算符,变量等等,另外要让其执行某个命令,则使用echo加上反引号,反引号里为所要执行的命令。

#!/bin/bash

read First_Name

echo "输出:${First_Name}"


Printf命令:模仿的是C语言里的Printf,其用法也基本与其保持一致,至于与echo的区别在于,printf能进行有效的显示格式控制。

Test命令:我们可以用test取代if语句后的括号’[ ]’。

#!/bin/bash
num1=200
num2=100
if test $num1 -gt $num2
then 
echo "num1 大于 num2"
else 
echo "num1 小于 num2"
fi

4语法

4.1if语句

(1)If else

if []
then 
..语句..
else
..语句..
fi

(2)If elseif

if []
then 
..语句..
elif []
then
..语句..
else
..语句..
fi

4.2for循环

结构:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
Done

例子:

#!/bin/bash
for a in 1 2 3 4 5
do
  echo $a
Done


4.3while语句

结构:

while condition
do
    command
Done

例子(注意空格):

#!/bin/bash
a=1
b=5
while([ $a -lt $b ])
do
  echo $a
  a=`expr $a + 1`
done


4.4until循环

where循环一样,只不过是当条件为真时停止。

4.5Case

结构:

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

例子:

#!/bin/bash
echo '你输入的数字为:'
read Num
case $Num in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '其他'
    ;;
esac

4.6函数

函数的使用比较简单,当然也可以往里面传递参数。参数的传递与之前的文件参数传递是一样的。

例子:

#!/bin/bash
read name      
read word
FirstWord(){
   echo "$1 say: $2 "   
}
FirstWord $name $word

5文件

可以在一个shell脚本里执行另一个shell脚本。引用规则为:. 文件路径

如下: . ./test1.sh

例子:

#test1.sh文件
#!/bin/bash
name="Tom"
word="Hello world!" 
#test2.sh文件
#!/bin/bash
. ./test1.sh
echo "$name say: $word"






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值