shell字符串:
str="sasa"
echo "hello,i am \"${str}\""
country="china"
city="qingdao"
echo "${city},${country}"
echo "获取字符串长度"
echo "${#country}"
echo "截取字符串,从0开始"
echo "${country:1:3}"
echo "查找子字符串"
greet="hello heihei haha"
echo `expr index "${greet}" he`
root@VM-0-17-ubuntu:/home/bash# ./bash13.sh
hello,i am "sasa"
qingdao,china
获取字符串长度
5
截取字符串,从0开始
hin
查找子字符串
1
数组:
#数组的定义
echo "数组的定义"
arr=(zhangsan lisi wangwu)
echo ${arr[*]}
arr=(
zhangsan
lisi
wangwu
zhaoliu
)
echo ${arr[*]}
arr[0]=zhangsan
arr[1]=sasa
arr[2]=lisi
echo ${arr[@]}
#获取数组长度
echo "获取数组长度"
echo ${#arr[*]}
root@VM-0-17-ubuntu:/home/bash# ./bash14.sh
数组的定义
zhangsan lisi wangwu
zhangsan lisi wangwu zhaoliu
zhangsan sasa lisi zhaoliu
获取数组长度
4
echo命令:
str=qqq
echo 输出时双引号可以忽略
echo ${str}
echo "${str}"
echo 显示转义字符
echo \"${str}\"
echo 显示换行
echo -e "hello \n sasa"
echo "zhangsan"
echo 显示结果重定向到文件,此时file2文件中该字符串
echo "line one" >file2.txt
echo 显示命令执行结果
echo `date`
root@VM-0-17-ubuntu:/home/bash# ./bash15.sh
输出时双引号可以忽略
qqq
qqq
显示转义字符
"qqq"
显示换行
hello
sasa
zhangsan
显示结果重定向到文件,此时file2文件中该字符串
显示命令执行结果
Sat May 26 11:52:40 CST 2018
if else 语句
cho if [] then ... fi
echo if [] then ... else ... fi
echo if [] then ... elif [] then ... elif [] then ... else ... fi
echo [] 条件判断
a=10
b=20
if [ ${a} == ${b} ]
then
echo ==
else
echo !=
fi
echo test 条件判断
if test ${a} == ${b}
then
echo ==
else
echo !=
fi
if [ ${a} == ${b} ]
then
echo ==
elif [ ${a} -gt ${b} ]
then
echo "a>b"
else
echo "a<b"
fi
root@VM-0-17-ubuntu:/home/bash# ./bash16.sh
if [] then ... fi
if [] then ... else ... fi
if [] then ... elif [] then ... elif [] then ... else ... fi
[] 条件判断
!=
test 条件判断
!=
a<b
case in语句
echo please enter a num between 1 and 4
read num
case ${num} in
1)echo 1111111
;;
2)echo 222222
;;
3)echo 33333
;;
4)echo 4444444
;;
*)echo "not in 1-4,is ${num}"
;;
esac
root@VM-0-17-ubuntu:/home/bash# ./bash17.sh
please enter a num between 1 and 4
7
not in 1-4,is 7
root@VM-0-17-ubuntu:/home/bash# ./bash17.sh
please enter a num between 1 and 4
3
argu1=${1}
case ${argu1} in
[a-z]|[A-Z])
echo "a-Z"
;;
[0-9])
echo "0-9"
;;
*)
echo "what?"
;;
esac
root@VM-0-17-ubuntu:/home/bash# ./bash18.sh 1
0-9
root@VM-0-17-ubuntu:/home/bash# ./bash18.sh y
a-Z
root@VM-0-17-ubuntu:/home/bash# ./bash18.sh *
what?
for循环
echo 每次输出的内容根据空格作为分割
for loop in 1 2 3 4 5
do echo "this is ${loop}"
done
for loop in 1234
do echo "${loop}"
done
for loop in "this is shell,enjoy it"
do echo "${loop}"
done
for loop in "this is shell,enjoy it" "java is no.1"
do echo "${loop}"
done
for file in ./*
do
if test -x ${file}
then
echo "${file} can execute"
else
echo "${file} can not execute"
fi
done
root@VM-0-17-ubuntu:/home/bash# ./bash19.sh
每次输出的内容根据空格作为分割
this is 1
this is 2
this is 3
this is 4
this is 5
1234
this is shell,enjoy it
this is shell,enjoy it
java is no.1
./bash01.sh can execute
./bash02.sh can execute
./bash03.sh can execute
./bash04.sh can execute
./bash05.sh can execute
./bash06.sh can execute
./bash07.sh can execute
./bash08.sh can execute
./bash09.sh can execute
./bash10.sh can execute
./bash11.sh can execute
./bash12.sh can execute
./bash13.sh can execute
./bash14.sh can execute
./bash15.sh can execute
./bash16.sh can execute
./bash17.sh can execute
./bash18.sh can execute
./bash19.sh can execute
./file1.txt can not execute
./file2.txt can not execute
while循环
echo "type ctrl+d to exit"
echo "please enter ur favourite game"
while read gameName
do
echo "wow,it is ${gameName}"
done
root@VM-0-17-ubuntu:/home/bash# ./bash21.sh
type ctrl+d to exit
please enter ur favourite game
lol
wow,it is lol
count=0
while [[ ${count} -lt 5 ]]
do
echo ${count}
count=$(expr ${count} + 1)
done
root@VM-0-17-ubuntu:/home/bash# ./bash20.sh
0
1
2
3
4
until循环
a=0
until [[ ${a} -gt 10 ]]
do
echo ${a}
a=$(expr ${a} + 1)
done
root@VM-0-17-ubuntu:/home/bash# ./bash22.sh
0
1
2
3
4
5
6
7
8
9
10