shell编程基础

本文详细介绍了Shell编程中的echo与printf命令,展示了条件语句、test命令、多分支选择case结构,以及循环(for、while、until)和break/continue命令。此外,还涵盖了函数定义、输出重定向和输入重定向等核心概念。
摘要由CSDN通过智能技术生成

输出

echo 要输出的内容
printf 输出内容,与C语言类似

与C语言区别为:
printf 命令不用加括号
format-string 可以没有引号,但最好加上,单引号双引号均可。
参数多于格式控制符(%)时,format-string 可以重用,可以将所有参数都转换。
arguments 使用空格分隔,不用逗号。

条件语句

if … then…fi 语句;
if … then…else … fi 语句;
if … then…elif …then… else … fi 语句。
以fi为结尾

test命令

检查条件是否成立
在这里插入图片描述
在这里插入图片描述
另外,Shell还提供了与( ! )、或( -o )、非( -a )三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低。

多分支选择

case…esac
语法:

case 值 in
模式1)
    command1
    command2
    command3
    ;;
模式2)
    command1
    command2
    command3
    ;;
*)
    command1
    command2
    command3
    ;;
esac

取值后面必须为关键字 in,每一模式必须以右括号结束。
取值可以为变量或常数。
匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。
实例:

echo 'Input a number between 1 to 4'
echo 'Your number is:\c'
read aNum
case $aNum in
    1)  echo 'You select 1'
    ;;
    2)  echo 'You select 2'
    ;;
    3)  echo 'You select 3'
    ;;
    4)  echo 'You select 4'
    ;;
    *)  echo 'You do not select a number between 1 to 4'
    ;;
esac

循环

for

for循环一般格式为:

for 变量 in 列表
do
    command1
    command2
    ...
    commandN
done

实例:

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

结果:

The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5

while

COUNTER=0
while [ $COUNTER -lt 5 ]
do
    COUNTER='expr $COUNTER+1'
    echo $COUNTER
done

结果:

1
2
3
4
5

until

until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反。一般while循环优于until循环,但在某些时候,也只是极少数情况下,until 循环更加有用。

#!/bin/bash
a=0
until [ ! $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

结果:

0
1
2
3
4
5
6
7
8
9

break和continue命令

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,像大多数编程语言一样,Shell也使用 break 和 continue 来跳出循环。

break

break命令允许跳出所有循环(终止执行后面的所有循环)。

#!/bin/bash
for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

结果:

1 0
1 5
continue

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

#!/bin/bash
NUMS="1 2 3 4 5 6 7"
for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

结果:

Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number

函数

(function) function_name () {
    list of commands
    [ return value ]
}

函数返回值,可以显式增加return语句;如果不加,会将最后一条命令运行结果作为返回值。
Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果 return 其他数据,比如一个字符串,往往会得到错误提示:“numeric argument required”。
如果一定要让函数返回字符串,那么可以先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数返回值。
在这里插入图片描述

输出重定向

语法:

$ command > file

> 会覆盖文件内容
>> 内容会追加到文件末尾

输入重定向

command < file
总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值