学校开了一门Linux课程,在此记录部分课程内容
(1)Shell基本知识
查看Shell版本: echo $SHELL
echo相当于C语言中的printf打印语句
read相当于C语言中的scanf输入语句
read name 代表从键盘键入的值传送给name变量
read -p允许直接输出
read -p “Enter your name:” name
创建Shell脚本:vim XX.sh
Shell脚本第一行需以 #!/bin/bash开头
赋予Shell脚本可执行权限:chmod +x xx.sh
还有其他选项 如chmod u+x xxx.sh u代表用户 x代表可执行 只授予这个文件的所属者执行的权限
运行Shell脚本:./xx.sh 或sh xx.sh
(2)输出内置变量
echo -n “Date and time is” date
echo -n “Path is” $PATH
echo “Name is `whoami`” #注意这里不是'单引号 而是反引号`
echo -n “Current directory is” pwd
(3)算术运算
#!/bin/bash
echo $[3+4]
echo $[3-4]
echo $[3*4]
echo $[3**4]
echo $[3/4]
(4)脚本中使用变量
expr是表达式计算工具,可以完成表达式的求值操作
使用变量时 需在前面加上$
#!/bin/bash
a=3
b=4
echo "a=$a"
echo "b=$b"
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
val=[ $a == $b ]
(5)循环语句
for循环格式: for 变量 in 循环范围
do 循环体
done
#!/bin/bash
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
for i in {1..6}
do
echo "it is $i"
done
while循环格式
while((循环条件))
do 循环体
done
#!/bin/bash
x=0
while((x<=5))
do
echo "while loop :$x"
let x++
done
(6)条件语句 以if开头 以fi结束
if [expression]; then
statements
elif [expression]; then
statements
else
statements
fi
#!/bin/bash
read -p "input your score: " score
echo $score
if [ $score -ge 90 ]
then echo "score is very good"
elif [ $score -ge 80 ]
then
echo "score is good"
elif [ $score -ge 60 ]
then
echo "it is ok"
else echo "you should work harder"
fi
(7)练习作业
1. 写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型
#!/bin/bash
echo -n "Please input a diriectory:"
read dir
echo $dir
if [ ! -d $dir ];
then
echo "Directory not exist, Creating"
mkdir $dir
else
echo "Exist"
ls $dir
fi
2. 写一个脚本,完成如下功能;判断给定的两个数值,孰大孰小;给定数值的方法:脚本参数,命令交互
#!/bin/bash
read -p "please input first number a:" a
read -p "please input second number b:" b
echo "a=$a"
echo "b=$b"
if [ $a -gt $b ]
then
echo "a>b"
elif [ $a -lt $b ]
then
echo "a<b"
else echo "a=b"
fi
3. 求100以内所有奇数之和(至少用3种方法)
第一种方法
#!/bin/bash
sum=0
i=1
while((i<=100))
do
let "sum+=i"
let "i=i+2"
done
echo "result=$sum"
第二种方法
#!/bin/bash
sum=0
for i in $( seq 1 2 100)
do
let "sum+=i"
done
echo "result=$sum"
第三种方法
#!/bin/bash
sum=0
for num in {1..100..2};
do
let sum=$sum+$num;
done
echo $sum