Shell脚本-基础
一、变量
1.命名规范
-
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
-
中间不能有空格,可以使用下划线(_)。
-
不能使用标点符号。
-
不能使用bash里的关键字(可用help命令查看保留关键字)
2.使用变量
your_name="qinjx"
echo $your_name
echo ${your_name}
二、字符串
1.单引号
任何字符都会原样输出,单引号字符串中的变量是无效的;
不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
str='this is a string'
2.双引号
双引号里可以有变量
双引号里可以出现转义字符
your_name='runoob'
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str
3.拼接字符串
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
4.获取字符串长度
string="abcd"
#输出 4
echo ${#string}
5.提取子字符串
以下实例从字符串第 2 个字符开始截取 4 个字符:
string="runoob is a great site"
# 输出 unoo
echo ${string:1:4}
三、数组
bash支持一维数组,不支持多维数组,并且没有限定数组的大小。
1.定义数组
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n)
2.读取数组
# n某个具体的
valuen=${array_name[n]}
# @符号可以获取数组中的所有元素
echo ${array_name[@]}
3.获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}
四、传递参数
执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";

$ 与 $@ 区别:*
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)
五、比较
数值比较

代码
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不相等!'
fi
字符串比较

num1="ru1noob"
num2="runoob"
if test $num1 = $num2
then
echo '两个字符串相等!'
else
echo '两个字符串不相等!'
fi
文件比较

cd /bin
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
Shell 还提供了与( -a )、或( -o )、非( ! ),优先级为: ! 最高, -a 次之, -o 最低
cd /bin
if test -e ./notFile -o -e ./bash
then
echo '至少有一个文件存在!'
else
echo '两个文件都不存在'
fi
六、流程控制
if
if condition
then
command1
fi
写成一行
if condition;then command1;fi
if else
if condition
then
command1
else
command2
fi
for
in 列表可以包含替换、字符串和文件名
for var in item1 item2 ... itemN
do
command1
done
写成一行
for var in item1 item2 ... itemN; do command1; command2… done;

浙公网安备 33010602011771号