学校开了一门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


更多推荐

Shell编程基础入门:编写第一个Shell脚本