先上测试代码跟效果图
#创建变量
my_name="jack"
you_name='java'
qwer="注释"
my_age="20岁"
you_age="30岁"
#使用变量
echo ${my_name}
echo $you_name
#以“#”开头的行就是注释,会被解释器忽略
#echo ${qwer}
#字符串
#单引号字符串的限制:
# 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
# 单引号字串中不能出现单引号(对单引号使用转义符后也不行
#双引号:
# 双引号里可以有变量
# 双引号里可以出现转义字符
echo "${my_name} 我的天啊"
echo '${my_name} 我的地呀'
#拼接字符串
echo $my_name $my_age
echo $my_name$my_age
#获取字符串长度
echo ${#my_name}
#截取字符串
echo ${my_name:0:2}
这是到字符串操作的代码及截图 后面还有
变量
定义变量
my_name="jack"
my_name='jack'
ps: 变量名和等号之间不能有空格,变量后面不能有;
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行 双引号字符串的限制:
- 双引号里可以有变量
- 双引号里可以出现转义字符 但是在Python中单引号和双引号是没有区别,但是Python 还有三个引号,在三个引号内字符都不会被转义
使用变量
对于已经定义过的变量,使用的适合在前面添加$
echo $my_name
echo ${my_name}
变量名外面的花括号是可选的,加不加都行,建议使用第二种形式
注释
- 以“#”开头的行就是注释,会被解释器忽略。
- 多行注释
- sh里没有多行注释,只能每一行加一个#号。就像这样:
#--------------------------------------------#
#xxxx: xxx
#xxx: xxx
#xxxxxxxxxxxxx:
# xxxxxxxx
#--------------------------------------------
字符串操作
拼接字符串
my_name="jack";
my_age="20岁"
echo \$my_name $my_age
echo \$my_name$my_age
获取字符串长度
echo ${#my_name}
截取字符串
echo ${my_name:0:2}
Shell 数组
定义数组
在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为: name=(name1 name2 name3) 还可以单独定义数组的各个分量:
ary[0]=name1
ary[1]=name2
ary[3]=name3
ps: 可以不使用连续的下标,而且下标的范围没有限制
读取数组
读取数组元素值的一般格式是:
${数组名[下标]}
例如:
echo ${name[0]}
使用@符号可以获取数组中的所有元素,例如:
echo ${name[@]}
获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
取得数组元素的个数
length=${#name[@]}
echo $length
或者
length=${#name[*]}
echo $length
取得数组单个元素的长度
lengthn=${#name[n]}
echo $length
Shell 流程控制
和Java、PHP、Python等语言不一样,sh的流程控制不可为空,如(以下为java流程控制写法):
int a=101;
if (a<60){
System.out.println("不及格");
}else if (a<80){
System.out.println("良");
}else if(a<=100){
System.out.println("优秀");
}else {
//什么都不干
}
在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else
例子:
#!/usr/bin/env bash
a=1
b=2
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
for 循环
Shell的for循环和Python 有点类似
Python的for循环
for index in 1,2,3,4,5:
print(index);
Shell的for循环,第一种写法
for index in 1 2 3 4 5; do
echo "index="$index
done
Shell的for循环,第二种写法
for ((i=0; i<5; i++)); do
echo "i="$i
done
while 语句
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。
int=1while(( $int<=5 ))do
echo $int
let "int++"
done