Linux再学--shell基础3流程语句

1 数组

定义一个数组:INTPUTS=(1 2 3);
数组中每个元素使用空格间隔,

  • 显示所有元素:echo ${INPUTS[@]}
  • 显示元素个数:echo ${#INPUTS[@]}
  • 获取某个值:echo ${INPUTS[0]}
    使用示例:
    在这里插入图片描述
    数组遍历在循环部分介绍

2 转义和引用

  • 特殊字符:
  1. # 一般用于注释;
  2. 分号 多个语句写在一行的时候需要分号隔开
  3. \转义;\n\t\r等,$、" 、\等
  • 常用的引用符号
    • " 双引号
    • ' 单引号
    • ` 反引号(数字键1前面的那个)
      在这里插入图片描述
      需要注意的是,如果有使用变量,那么单引号里面的变量是会被当做普通字符串,

3 运算符

  • 赋值
    赋值运算符=,用于算数赋值和字符串赋值;可以使用unset取消赋值;还可以作为测试操作符号;

  • 算数
    +(加)、-(减)、 * (乘)、/(除)、 **(乘方)、%(取余 求模);使用expr命令进行运算:expr 4 + 5运行如下:
    在这里插入图片描述
    注意加号两边必须要用空格,同时只能支持整数;expr赋值给一个变量:
    在这里插入图片描述
    注意图中的是反引号;

  • 数字常量
    一般用法是 let “变量名 = 值”,0开头的是8进制,0x开头的是十二进制;

  • 双圆括号
    这个是let 命令得简化版本;一般是((a = 10))、((a++))、echo $((100+20)),测试如下:
    在这里插入图片描述

4 其他符号

()(())$()圆括号
单独使用圆括号会产生一个子shell ( xyz= 123 ),
数组初始化IPS=( 3 test 666 );
[][[]]方括号
单独使用方括号是测试(test)或数组元素功能,
两个方括号表示测试表达式;
在这里插入图片描述

<>尖括号重定向符号

{}花括号
输出范围echo {0..9},一般用于循环
文件复制cp /etc/ passwd{,.bak},将etc目录下的password文件复制成password.bat;

5 测试test命令

一般常用语字符串及目录文件是否存在的判断;实例如下:
在这里插入图片描述
需要说明的是,在shell里0表示成功,其他非零值表示失败;-d 表示是否存在且是不是文件夹,-f 表示是否存在且是不是文件,-e 表示是否存在且是不是文件或文件夹;

5. if语句

  1. shell中if语句的结构是 if then,其基本用法是:
  • if [ 测试条件成立或命令返回值是0 ]; then 执行响应的命令;
  • 否则fi结束
    我们在test.sh中新增如下:
 if [ 8 > 4 ]; then
   echo "结果正确》"
fi

执行后效果如下:
在这里插入图片描述
2. if then else fi
这个用法与上面的类似;基本使用如下:
在这里插入图片描述
这条命令是判断当前的用户是不是root,如果是就执行then,否则就执行else
3. 嵌套if; if [ ]; then elif [ ]; then fi
命令同上;基本使用:
在这里插入图片描述

7. 循环

  1. 使用for循环遍历命令的执行结果
    基本使用是 :
 for  参数 in 列表
  do 执行的命令
  done 封闭一个循环

使用反引号或者$()方式执行命令,命令的结果会被当做列表处理;

  1. 使用for遍历变量或文件内容
    我们修改test.sh增加下面的语句:
for fileName in `ls`
do
 echo "文件名是:$fileName"
done

运行结果如下:
在这里插入图片描述
可以看到这里成功输出了当前目录下的所有文件和文件夹;
for中嵌套if使用,修改文件:

for fileName in `ls`
do
 if [ -f ${fileName} ]; then
    echo "文件名是:$fileName"
else 
   echo "文件夹是:$fileName"
 fi
 
done

运行后执行结果:
在这里插入图片描述

  1. c风格的for命令
    shell中支持c风格的for但是由于shell不擅长做运算,所以这个命令只需要了解:
for  ((i=0;i<10;i++))
 do 
  #执行的命令
 done #封闭一个循环

执行后运行效果:
在这里插入图片描述

  1. while循环
    基本使用是:
while test测试是否成立
do
# 命令语句
done

一般可以用来做交互式菜单,这里就需要死循环写法如下:

while :
do 
   :  
 done
  1. until循环
    与while 循环相反。
  2. break和continue语句
    可以退出循环,或者跳过执行下一个循环;修改test.sh如下:
for  ((i=0;i<10;i++))
  do 
   #执行的命令
   if [ $i = 3 ];then
     continue
   fi
     if [ $i = 5 ];then
     break
   fi
   echo $i
  done #封闭一个循环

执行后结果:
在这里插入图片描述
可以看到输出跳过的3,并且循环到5就结束了;

  1. 命令行参数:
    ● 命令行参数可以使用$1$2、 … 、${10}、… $n进行读取;
    $0代表脚本名称 ;
    $*$@代表所有位置参数;
    $#代表位置参数的数量;

猜你喜欢

转载自blog.csdn.net/lym594887256/article/details/125121271
今日推荐