一.Shell
作用:把Linux中的命令保存起来,下次需要时直接运行Shell程序
①cd Desktop/
②mkdir shellText/
③cd shellText/
④touch hello.sh
⑤vim hello.sh
sh hello.sh运行文件程序
在hello,sh文件内进行shell编程
1.定义变量(不能有空格)
name='zhangsan'
echo ${name}——>"zhangsan"
num=10
echo ${num}——>"10"
echo "your name is ${name}" ---->"your name is zhangsan"
myname = 'abc'
###重新赋值
readonly myname
myname=’dce‘——>'dce'
###删除变量(unset)
在shell编程中如果一个变量被删除,再次使用不会报错但是没有输出
2.字符串
双引号:内不能包含“$,`,\等字符”(" ")
单引号:任意字符都不会被解析,都会原样输出(' ')
反引号:会将内容当做命令来执行(` `)
3.数组(默认获取数组中的第0个元素)
arr1=(10 20 30 40)
echo ${arr1}——>10
arr2=(
10
20
30
40
)
echo ${arr2}——>10
#获取数组中的元素
echo ${arr1[2]}——>30
echo ${arr1[@]}——>10 20 30 40
#获取数组的长度
echo ${#arr1[@]}——>4
echo ${#arr1[*]}——>4
4.运算符
算术运算符
①val=`expr 2 + 2`
echo ${val}——>4
②val=`expr 2\*2`
echo ${val}——>4
③val=`expr 2 / 2`
echo ${val}——>1
④val=`expr 2 % 2`
echo ${val}——>0
关系运算符
a=10
b=20
if [ $a -eq $b ] -eq相当于Python中的==(中括号前后加空格)
then
echo "a等于b"
else
echo "a不等于b"
fi (后面要加fi为结束语句)
#逻辑运算符
if [ 1 -lt 3 -a 2 -lt 3 ] -lt相当于小于号,-a相当于python中的and
then
echo "ok"
fi
if [ 1 -lt 3 ] && [ 2 -lt 3 ]
then
echo "ok~~~"
fi
5.检测
#!/bin/bash
#算术运算符检测
val=`expr 2 + 2`
echo ${val}
val=`expr 2 \* 2`
echo ${val}
val=`expr 2 / 2`
echo ${val}
val=`expr 2 % 2`
echo ${val}
#关系运算符检测
a=10
b=20
if [ $a -eq $b ]
then
echo "a等于b"
else
echo "a不等于b"
fi
#逻辑运算符检测
if [ 1 -lt 3 -a 2 -lt 3 ]
then
echo "ok"
fi
if [ 1 -lt 3 ] && [ 2 -lt 3 ]
then
echo "ok~~~"
fi
六.打印语句
①echo
echo -e "ok,\c" ——>ok
(-e表示开启转义,-c表示不换行,/n表示换行)
echo "test~~~~" ——>test~~~
echo `date` ——>当前时间
echo `cal` ——>日历
②printf
printf "%-10s %-8s %-4s\n" 姓名 性别 体重————————》 姓名 性别 体重
printf "%-10s %-8s %-4s\n" zhangsan nan 66.0543 ————》 zhangsan nan 66.0543
printf "%-10s %-8s %-4.3s\n" lisi nv 50.634343———————》 lisi nv 50.
printf "%-10s %-8s %-4.2s\n" jack nan 75.0434———————》 jack nan 75.
10s/8s/4s分别代表占位符,占位符越大中间间距越大
第三行的4.3和第四行的4.2分别表示(整体!)保留三位和两位
七.Shell语句
a=10
b=20
if [ $a -eq $b ]
then
echo "="
elif [ $a -gt $b ]
then
echo "》"
else
echo "<"
fi
case语句判断
echo "请输入一个数字"
read num
case $num in
1) echo "你选择了1"
;; #打印数组中的所有元素个数
2) echo "你选择了2"
;;
*) echo ""
;;
esac
#循环语句
①for num in 1 2 3 4
do
echo $num
done
②for s in "hello"
do
echo $s
done
③arr=(34 54 54 54)
for x in ${a[*]}
do
echo $x
done
④while语句
n1=0
sum1=0
while [$n1 -lt 5] -lt代表小于号
do
sum1=$[sum+$n1]
n1=$[$n1+1]或者(let "n++")
⑤#until(相当于js中的do while)
i=0
until [ $i -lt 5]
do
echo $i
((i++))
done
八 函数
①无参无返回值
demo(){
echo "hello" #打印数组中的所有元素个数
}
demo
②有返回值函数
add()
{
echo "请输入第一个数"
read num #read表示从控制台输入
echo "请输入第二个数"
read otherNum
return $(($ #打印数组中的所有元素个数num+$otherNum))
}
add
echo "得到的结果为位$?"
③有参数函数
arg()
{
echo $1 #接参数
echo $2
echo $# #打印长度
echo $* #打印数组中的所有元素个数
return 23
}
arg 10 20
echo $?
网友评论