当前位置:首页>Linux>Linux的shell快速使用

Linux的shell快速使用

  • 2026-08-25 10:57:14
Linux的shell快速使用

Linux提供的Shell解析器有

Ubuntu默认:

Shell脚本入门

脚本以**#!/bin/bash**开头(指定解析器)

qs:~$ vim helloworld.sh

在helloworld.sh中输入如下内容

#!/bin/bash
echo"Hello shell!"

运行方式:

  1. 1. sh/bash + 路径 如sh ./helloworld.sh、bash ./helloworld.sh
  2. 2. 直接运行脚本,先赋予执行权限chmod +x helloworld.sh,然后直接执行./helloworld.sh

变量

常用系统变量

PATH、HOME、PWD、SHELL、USER等

获取变量的值

语法:$变量名

$和变量名之间不能有空格。

显示当前Shell中所有变量:set

自定义变量

(1)定义变量:变量名=变量值,注意,=号前后不能有空格。

(2)撤销变量:unset 变量名。

(3)声明静态变量:readonly变量,注意:不能重新赋值,不能unset。

(4)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

(5)变量的值如果有空格,需要使用双引号或单引号括起来。

(6)最右侧分号可有可无,一般都不写

注意:变量默认类型都是字符串类型,无法直接进行数值运算

可把变量提升为全局环境变量,可供其他Shell程序使用

语法:export 变量名

在helloworld.sh文件中增加echo $B。

#!/bin/bash

echo"helloworld"
echo$B

执行

atguigu@ubuntu:~$ B=3
atguigu@ubuntu:~$ ./helloworld.sh 

发现并没有打印输出变量B的值

atguigu@ubuntu:~$ export B
atguigu@ubuntu:~$ ./helloworld.sh 
helloworld
3
注意:必须在同一个窗口中运行测试(必须得是在同一个进程中)

特殊变量

  • • $n

(功能描述:n为数字,代表该脚本名称,1-代表第一到第九个参数,十以上的参数需要用大括号包含,如{10}。)

新建hello.sh

#! /bin/bash
echo'==========$n=========='
echo$0
echo$1
echo $
  • • $#

$# (功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。)。

建立脚本

#! /bin/bash
echo'==========$n=========='
echo$#
  • • $*、$@

(功能描述:这个变量代表命令行中所有的参数,*把所有的参数看成一个整体。)

(功能描述:这个变量也代表命令行中所有的参数,不过@把每个参数区分对待。)

  • • $?

(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

算术运算

$((运算式))或者$[运算式]

条件判断

基本语法

  • • 写法1:test condition
  • • 写法2:[ condition ](condition前后有空格)

注意:条件成立(数据非空)即为0(真),否则为1(假)

test atguigu返回0,test 返回1

[ atguigu ]返回0,[ ] 返回1。[ “” ]返回1

常用判断条件

  • • 比较数值

[ ]中不能直接使用=、>、<等,(( )) 主要用于执行算术运算与条件判断。其内部能运用常见的 C 语言风格算术和比较运算符。

-eq 等于(equal) -ne 不等于(not equal)

-lt 小于(less than) -le 小于等于(less equal)

-gt 大于(greater than) -ge 大于等于(greater equal)

  • • 按照文件权限判断

-r 有读的权限(read)

-w 有写的权限(write)

-x 有执行的权限(execute)

  • • 按照文件类型进行判断

-e 文件存在(existence)

-f 文件存在并且是一个常规的文件(file)

-d 文件存在并且是一个目录(directory)

  • • 多条件

&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命

流程

if 判断

if [ 条件判断式 ]; then
    程序 
fi

#=======================

if  [ 条件判断式 ] 
then
    程序 
fi

#=======================

if [ 条件判断式 ] 
then
    程序 
elif [ 条件判断式 ]
then
    程序
else
    程序
fi

① [ 条件判断式 ]中括号和条件判断式之间必须有空格

② if后要有空格

#!/bin/bash

if [ $# -eq 0 ]
then
echo'请携带年龄'
elif [ $1 -lt 18 ]
then
echo'未成年人'
elif [ $1 -lt 60 ]
then
echo'成年人'
else
echo'老年人'
fi

###
atguigu@ubuntu:~$ chmod 777 if.sh
atguigu@ubuntu:~$ ./if.sh 12
未成年人
atguigu@ubuntu:~$ ./if.sh 34
成年人
atguigu@ubuntu:~$ ./if.sh 66
老年人
atguigu@ubuntu:~$ ./if.sh
请携带年龄

case

case $变量名 in
"值1")
    如果变量的值等于值1,则执行程序1 
;; 
值2) 
    如果变量的值等于值2,则执行程序2 
;; 
    …省略其他分支… 
*) 
    如果变量的值都不是以上的值,则执行此程序 
;; 
esac

注意事项:

(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

(2)双分号“;;”表示命令序列结束,相当于C中的break。

(3)最后的“*)”表示默认模式,相当于C中的default。

#!/bin/bash

case$1in
"1")
echo"banzhang"
;;
2)
echo"cls"
;;
*)
echo"renyao"
;;
esac

for

for ((初始值;循环控制条件;变量变化)) 
do
    程序 
done
#!/bin/bash

sum=0
for((i=1;i<=100;i++))
do
sum=$[$sum+$i]
done
echo$sum

还有一种用法

for 变量 in 值1 值2 值3… 
do
    程序 
done
#!/bin/bash

for i in cls mly wls
do
echo"ban zhang love $i"
done

while循环

while [ 条件判断式 ] 
do
    程序
done
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum+$i]
        i=$[$i+1]
done

echo$sum

read命令

读取终端输入到指定变量中

用法:read (选项) (参数)

选项:

-p:指定读取值时的提示符。

-t:指定读取值时等待的时间(秒)如果-t不加表示一直等待。

变量:指定读取值的变量名

函数

  • • Shell命令是构成Shell脚本的基础单位,包括预定义的操作系统命令和外部工具。
  • • Shell函数是用户自定义的代码块,用于封装复杂操作,提高代码的模块化和复用性。
  • • 命令直接作用于Shell环境,而函数则是在Shell环境中定义并调用的,提供了更灵活的编程能力。

自定义函数

[ function ] funname[()]     注意只能省略其中一个
{
    Action;
    [return int;]
}

(1)必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。

(2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)。

#!/bin/bash
sum()
{
    SUM=$[$1+$2]
echo$SUM
}

read -p "请输入第一个数值: " n1
read -p "请输入第二个数值: " n2
sum$n1$n2

最新文章

随机文章