shell脚本学习(一)—变量、数组、流程控制

变量

使用变量

  • 使用一个定义过的变量,只要在变量名前面加美元符号 $ 即可。
  • 变量名外面的花括号帮助解释器识别变量的边界。
for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

删除变量

  • unset命令可以删除变量

字符串

单引号

  • 单引号里的任何字符都会原样输出(其中变量无效)
  • 单引号字串中不能出现单独一个的单引号

双引号

  • 可以有变量
  • 可以出现转义字符

获取字符串长度

  • ${#string},变量为数组时等价于${#string[0]}

提取子字符串

  • ${string:i:j} 从i下标开始到j下标结束
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

数组

读取数组

  • 使用 @ 符号可以获取数组中的所有元素
echo ${array_name[@]}

echo语句

写入输出至文件

  • >>是追加文件末尾
  • >是直接覆盖,相当于擦除后写入

显示命令执行结果

  • 使用反引号``
echo `date`
Thu Jul 24 10:08:46 CST 2014

流程控制(if判断,循环)

sh 的流程控制不可为空,如果分支没有语句执行,就不要写

if else

  • 语法格式:
if condition
then
    command1 
    command2
    ...
    commandN 
fi

写成一行(适用于终端命令提示符):
if condition;then command1;...commandN; fi

if else-if else

  • 语法格式:
if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

for循环

  • 语法格式:
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

写成一行:
for var in item1 item2 ... itemN; do command1; command2… done;

until循环

  • until 循环执行一系列命令直至条件为 true 时停止。
  • 语法格式:
until condition
do
    command
done
  • 举例:输出0-9
#!/bin/bash

a=0

until [ ! $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

case ... esac

  • 取值可以为变量或常数。
  • 输出格式:
case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac
posted @ 2022-03-24 20:32  zjcfrancis  阅读(29)  评论(0编辑  收藏  举报