1.声明变量
your_name="qinjx"
echo $your_name
echo ${your_name} 

推荐使用,更好区分边界

字符串:单引号里面的变量无法识别,如'${your_name}' 输出还是$your_name 双引号,变量有效,如echo "${yourname}你好" 输出 linqin你好

2.拼接
	greeting="hello, "$your_name" !"
	greeting_2='hello, '$your_name' !'

获取字符串长度

string="abcd"
echo ${#string} #输出 4

提取子字符串

提取子字符串

以下实例从字符串第 2 个字符开始截取 4 个字符:

string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

查找子字符串 查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):

string="runoob is a great site"
echo `expr index "$string" io`  # 输出 4
传递参数:
  • $0(执行的文件名,指的是脚本名字),​$1(脚本后的第一个参数)
  • $# 传递到脚本的参数个数
  • $$ 脚本运行的当前进程ID号
  • $! 后台运行的最后一个进程的ID号
  • $* 传递的参数作为一个参数字符串显示,多个参数也是一个字符串"1 2 3"
  • $@ 传递的参数作为多个字符串参数显示,"1" "2" "3"
运算

2 - 3 必须空格,反引号 `` 乘号*需要转译*`

val=`expr 2 - 3`
echo $val

条件运算要[]中括号,同时空格必须的。

if [ $a != $b ]
then
   echo "a 不等于 b"
fi

关系运算,判断数字大小用的 -lt

if [ $a -lt $b ]
then
   echo "$a -lt $b: a 小于 b"
else
   echo "$a -lt $b: a 不小于 b"
fi

布尔运算 !非 -o 差不多 || -a 差不多&&

逻辑运算,要增加多一个[] || &&

if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

输出echo echo -e 开启转译 echo date 执行后输出

流程控制

if condition
then xxx
fi
if condition
then xx
else
	xx
fi
if condition
then xxx
elif condition
then xxx
else
xxx
fi

for循环

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

for item in $@
do
    echo $item
done

for((i=1;i<=5;i++))
do
    echo "这是第 $i 次调用"
done;

死循环

while true
do
    command
done

until循环
until condition
do
    command
done     

赋予执行权限 chmod +x test2.sh chmod 755 test.sh

实际案例:

循环删除索引

#!/bin/bash

for index in `cat delete.txt`
do
  echo -e "$index" "    " "\c"
  curl -XDELETE http://localhost:9200/$index
  echo -e "\r\n"  

done >> delete.log
上次更新时间: 2024/5/7 05:59:02