Linux学习笔记(4)Shell 脚本

时间:2022-04-27 06:07:43


如何执行Shell脚本?

比如脚本未知在 /home/shell.sh

//-x显示执行流程
# sh -x /home/shell.sh

执行环境

#!/bin/bash

因为我们使用的是 bash ,所以,必须要以【 #!/bin/bash 】来宣告这个文件内的语法使用 bash 的语法!
那么当这个程序被执行时,他就能够加载 bash 的相关环境配置文件 , 并且执行 bash 来使我们底下的指令能够执行。


shell 变量


if..then条件判断

shell 的风格,用倒序的字母单词和 正序的单词配对。
比如 if 语句, 结束时用 fi 来配对, esac是和case配对的.

//if 语句语法格式:
if [ condition ] 
then
    cmd
fi
//if else 语法格式
if [ condition ]
then
    cmd1
else
    cmd2
fi
//if else-if else 语法格式
if [ condition1 ]
then
    cmd1
elif [ condition2 ] 
then 
    cmd2
else
    cmd3
fi

注意:if语句这有个坑,if空格[空格$? -eq 0空格]; if后面加空格,条件两边也得加空格,不然就会报错。

例子

a=10
b=20
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

//输出:a 小于 b

for条件判断

for循环一般格式为:

for var in item1 item2 ... itemN
do
    cmd1
    cmd2
    ...
    cmdN
done

例子1:

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

输出结果:
The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5

//2.顺序输出字符串中的字符:
for str in 'This is a string'
do
    echo $str
done

输出结果:This is a string

例子2:还可以类似于java的循环

//输出1+2+......+100
s=0
for (( i=1; i<=100; i=i+1 ))
do
    s=$((${s}+${i}))
done
echo "The result of '1+2+3+...+100' is ==> ${s}"

while条件判断


Case .. esac条件判断