08shell脚本

shell脚本编程

1.1简介

  1. 什么是shell脚本
shell脚本: 就是一些命令的集合, 在脚本文件中可以有流程控制, 如顺序, 条件分支和循环等
脚本文件一般一.sh文件为扩展名, 但是不是必须的.
  1. 基本格式
命名格式
    一般使用.sh为后缀命名文件 (这是一个约定, 不是必须的)
书写格式
    # - 注释
    # 第一行的内容
    #! /bin/bash - 解析当前脚本文件使用的命令解析器
    #! /bin/sh
    bourne shell ->sh -> unix
    bourne again shell -> bash
    # 第二行开始
    shell命令 1
    shell命令 2
    shell命令 3
  1. 执行脚本
    • 脚本创建出来之后是一个普通文件 -> 没有执行权限
  • 例子
chmod u+x xxx.sh
./xxx.sh -> 最常用的方式
sh xxx.sh

1.2 shell中的变量

  1. 如何定义变量
int a;
int number = 9;
# shell - 变量没有数据类型, 新变量定义必须初始化
value=123
value1="123"
value1="hello,world"
#赋值的时候=前后不能有空格
  1. 位置变量 - 执行shell脚本时候, 传递到内部的参数
    • $0 - 脚本文件的名字
    • $1 - 第一个参数
    • $2 - 第二个参数
    • $3 - 第三参数
  • 例子
#!/bin/bash
echo $0
echo $1
echo $2
echo $3
echo $4
echo $5
echo $6
# 执行脚本
./test.sh 1 2 3 4 a b c d e f
# 输出结果
./test.sh
1 2 3 4 a b
  1. 特殊变量
$#: 表示参数的个数
$@: 表示全部的参数
$$: 当前进程的PID
$?: 程序执行完成之后的返回值
  1. 取普通变量的值
第一种方式: $变量名
    $PATH
    $value
第二种方式: ${变量名}
    ${PATH}
    ${value}
  1. 取命令执行之后的得到的值
第一种方式
    value=$(shell命令)
第二种方式:
    value=`shell命令`

1.3

awk 可以将文件拆分成功若干行, 根据指定的分隔符, 再将每一行拆分成若干列, 默认按照空格或tab进行拆分

  1. 基本语法格式
§ awk 参数 '条件{处理动作}' 操作的文件或数据
§ awk 参数 '/正则表达式{处理动作}' 操作的文件或数据
  1. 指定分隔符的参数: -F
-F分隔符
如果不指定分隔符, 默认是按照空格或者tab进行拆分
  1. 如何使用变量取出某一列?
$0 - 当前行
$1 - 拆分的第一列
$2 - 拆分的第二列
$3 - 拆分的第三列
...
打印某一列的值
print $n

1.4 条件判断语法 - if

# 条件判断语句和[ 判断语句 ]左右必须要有空格间隔
if[ 判断语句 ];then
处理语句
处理语句
fi
# 或者
if[ 判断语句 ]
then
处理语句
处理语句
fi
if [ 判断语句 ];then
处理语句
处理语句
elif [ 判断语句 ];then
处理语句
处理语句
else
处理语句
处理语句
fi

2.5 循环控制

循环:
for语句和while
例1:
for var in apple pear banana
do
echo $var
done
例2:打印当前所有的文件
for file in `ls`
do
echo $file
done
例3:求1-100的和
sum=0
for i in {1..100}
do
sum=$[$sum+$i]
done
echo "sum==[$sum]"
如果一个文件名字为: file.xxx, 想去掉~~得到file可以: basename file.xxx ".xxx"

使用这种方法可以获得文件名字去掉扩展名后的名字: 如: basename test.sh .sh
案例: 某个目录下有a.bak b.bak c.bak d.bak, 要求把扩展名去掉, 变成a b c d
mv a.bak $(basename a.bak .bak)
while的用法:
案例: 求1-10的和
sum=0
i=0
while [ $i -le 10 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo "sum==[$sum]"

1.5补充

1. 查看脚本命令解析器
cat /etc/shells
2. 查看当前使用的脚本  echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
echo $SHELL
3. 查看环境变量的值
echo $环境变量
原文地址:https://www.cnblogs.com/zranguai/p/15057290.html