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