基础
执行
# 方式一
bash hello.sh
# 方式二
chmod +x hello.sh
./hello.sh
变量
变量名和等号之间不能有空格
- 定义变量
your_name="qinjx"
for file in `ls /etc`
- 使用变量
# 使用
$your_name
${your_name}
- 删除变量
unset your_name
字符串
单引号任何字符都会原样输出, 双引号里可以有变量
- 操作
# 拼接字符串
your_name="qinjx"
greeting_1="hello, ${your_name} !"
# 获取字符串长度:
string="abcd"
echo ${#string} #输出:4
# 提取子字符串
string="alibaba is a great company"
echo ${string:1:4} #输出:liba
while
i=1
while ((i<=3))
do
echo $i
let i++ #循环变量递增
done
for 循环
# 方式一
for N in 1 2 3; do echo $N; done
# 方式二
for ((i = 0; i <= 5; i++))
do
echo "welcome $i times"
done
if判断
read -p "please input your name:" NAME ## read命令用于从控制台读取输入数据
## printf '%s\n' $NAME
if [ $NAME = root ]
then
echo "hello ${NAME}, welcome!"
elif [ $NAME = itcast ]
then
echo "hello ${NAME}, welcome!"
else
echo "SB, get out here!"
fi
= ==
!= !=
-eq ==
-ne !=
-gt >
-lt <
-ge >=
-le <=
! !
-o ||
-a &&
case
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum # 命令行读取一个数据赋值给aNum变量
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你没有输入 1 到 4 之间的数字'
;;
esac
文件包含
#! /bin/bash
. ./test1.sh
# source ./test1.sh
echo "姓名: $name"
函数
#!/bin/bash
show(){
echo "当前脚本名称:$0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "第三个参数:$3"
echo "参数数量:$#"
echo "所有参数(整体string):$*"
echo "所有参数(列表"",""):$@"
echo "当前进程编号:$$"
return 2 # 0-255的状态码
}
show first second # 执行函数
echo "返回值: $"
# 执行结果:
# 当前脚本名称:./func.sh
# 第一个参数:first
# 第二个参数:second
# 第三个参数:
# 参数数量:2
# 所有参数:first second
# 所有参数:first second
# 当前进程编号:19702
# 返回值: 2