shell

[TOC]

shell

运行方法

1
2
3
4
5
#方法一  直接运行解释器
sh hello.sh
#方法二 使用可执行文件
chmod +x hello.sh
./hello.sh

变量

定义

  1. 系统变量

    系统变量有$HOME、$PWD、$USER等

  2. 自定义变量

    • 创建变量

      变量名=变量值,等号两侧不能有空格,变量名一般习惯用大写

    • 删除变量

      unset 变量名

    • 声明静态变量

      readonly +变量名

      静态变量不能unset

    • 使用变量

      $name

将命令返回值赋给变量重点

1
2
A=`ls`
A=$(ls)

shell环境变量

  1. export 变量名=变量值,将 Shell 变量输出为环境变量。
  2. source 配置文件路径,让修改后的配置信息立即生效。
  3. echo $变量名,检查环境变量是否生效。

位置参数

位置参数变量

基本语法

  • $n :$0 代表命令本身、$1-$9 代表第1到9个参数,10以上参数用花括号,如 ${10}。
  • $* :命令行中所有参数,且把所有参数看成一个整体。
  • $@ :命令行中所有参数,且把每个参数区分对待。
  • $# :所有参数个数。

预定义变量

基本语法

  • $$ :当前进程的 PID 进程号。
  • $! :后台运行的最后一个进程的 PID 进程号。
  • $? :最后一次执行的命令的返回状态,0为执行正确,非0执行失败。

运算符

基本语法

  • $((运算式)) 或 $[运算式]
  • expr m + n 注意 expr 运算符间要有空格
  • expr m - n
  • expr *,/,% 分别代表乘,除,取余

条件判断

[ condition ] 注意condition前后都要有空格

非空返回0,0为 true,否则为 false

if语句

1
2
3
4
5
6
7
8
9
#!bin/bash
Int1=1;
Int2=2;
if [ $Int1 == $Int2]
then
echo "等"
else
echo "不相等"
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Int3=3;

if [ $Int3 -lt 0 ]
then
echo "<0"
elif [ $Int3 -lt 3 ]
then
echo "<3"
else
echo ">=3"
fi
# 注意-lt是小于的意思
# -gt是大于的意思
# -ge是大于等于

case语句

1
2
3
4
5
6
7
8
9
10
11
12
13
#!bin/bash
case $1 in
"1")
echo "1"
;;
"2")
echo "2"
;;
*)
echo "其他"
;;
esac

for循环

for循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for i in "$@"
do
echo "$i ";
done
echo "========"
# 结果:
1
2
3
4
5
6
7
8
9
========

由此可见,结果是竖着的

1
2
3
4
5
6
7
8
for i in "$*"
do
echo "$i ";
done
echo "========"

1 2 3 4 5 6 7 8 9
========

结果是横着的

C语言风格的for

1
2
3
4
5
6
#!/bin/bash

for ((i=0; i<10; i++))
do
echo "hahah"
done

使用{}for循环

1
2
3
4
5
6
7
8
9
10
#!bin/bash

SUM=0

for i in {1..100}
do
SUM=$(($SUM+$i))
done

echo $SUM

使用seqfor循环

1
2
3
4
5
6
7
8
9
10
#!bin/bash

SUM=0

for i in $(seq 1 100)
do
SUM=$(($SUM+$i))
done

echo $SUM

while

1
2
3
4
5
6
7
i=0;
while [ $i -lt 10 ]
do
echo $i
i=$((i+1))
done

输入

read -p "输入一个数字:"NUM

read -t "在10秒中输入一个数"NUM

read num将值赋给num

函数

编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 标准
function 函数名(){
指令
return n
}
# 简写
function 函数名 {
指令
return n
}
#简写
函数名{
指令
return n
}

程序执行的顺序

系统别名->函数->系统命令->可执行文件

其他知识点

  1. return 是退出函数

    exit 退出文件

调用

1
2
bash test1
#与嗲用可执行文件一样

shell
https://tsy244.github.io/2023/05/06/linux/shell/
Author
August Rosenberg
Posted on
May 6, 2023
Licensed under