Shell编程和Linux的高级命令

本文深入讲解了Shell编程的基础,包括脚本编写、执行方法、变量管理(系统变量、自定义变量与运算)、条件判断、流程控制(if, case, for, while, until)及函数的使用。涵盖了变量赋值、环境变量设置和常用Linux命令的结合实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shell编程和Linux的高级命令

Shell编程:随时编写,随时调试,随时执行

1.Shell编写和执行

脚本格式:#!/bin.bash开头指定用bash来解释我们编写的shell脚本

脚本必须有可执行权限

脚本的常用执行方式

第一种:输入脚本的绝对路径或相对路径,第一行必须加上#!**/bin/**bash

[root@bd-offcn-01 ~]# /root/helloworld.sh

第二种:bash或sh+脚本(不用赋予脚本+x权限)第一行可以不加上#!**/bin/**bash,但是一般都加上

[root@bd-offcn-01 ~]# sh /root/helloworld.sh 

2.变量

Linux Shell中的变量分为 系统变量和 用户自定义变量。

系统变量:HOME、HOME、HOMEPWD、SHELL、SHELL、SHELLUSER等等

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

2.1定义变量

基本语法:

a)定义变量:变量=值

b)撤销变量:unset 变量

c)声明静态变量:readonly变量 注意 不能unset

2.2将命令的返回值赋给变量

(1)A=ls -la 反引号,运行里面的命令,并把结果返回给变量A

(2)A=$(ls -la) 等价于反引号

2.3设置环境变量

在/etc/profille里设置环境变量

a) export 变量名=变量值 (功能描述:设置环境变量的值)

b) source 配置文件 (功能描述:让修改后的配置信息)

c) echo $变量名 (功能描述:查询环境变量的值)

2.4位置参数变量

$n: (0-9) $0代表命令本身,$1-9代表第一个到第九个参数,十个以上的参数9代表第一个到第九个参数,十个以上的参数9{10}

$*: 把所有的参数当做一个整体进行输出

$@: 把所有的参数 一个一个的输出

$#: 这个变量代表命令行中所有参数的个数

2.5预定义变量

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

(2)$$:当前进程的进程号(PID)

(3)$!:后台运行的最后一个进程的进程号(PID))

3.运算符

3.1算数运算符

(1)A=$((1+1))

(2)A=$[1+1]

(3)A=expr 1 + 1 用*的时候的得转义 * 注意运算符2边得有空格

(4)let A=1+1

3.2关系运算符

(1)-eq 等于则为真 [ 10 -eq 20 ] 注意:前中括号后和后中括号前都得有空格

(2)-ne 不等于则为真 [ 10 -ne 20 ]

(3)-gt 大于则为真 [ 10 -gt 20 ]

(4)-lt 小于则为真 [ 10 -lt 20 ]

(5)-ge 大于等于则为真 [ 10 -ge 20 ]

(6)-le 小于等于则为真 [ 10 -le 20 ]

3.3布尔运算符

(1)! 非 [ ! 10 -eq 10 ]

(2)-a 与 [ 10 -eq 20 -a 90 -eq 90 ]

(3)-o 或 [ 10 -eq 20 -a 90 -eq 90 ]

3.4逻辑运算符

逻辑运算符主要用于判断要不要继续进行下一步,包括三个符号

(1)无条件继续执行符号,即分号 ;

(2)正确则继续执行符号,即&&

(3)错误则继续执行符号,即||

3.5字符串运算符

(1)= 检测两个字符串是否相等,相等返回true [ $a = $b]返回 false

(2)!= 检测两个字符串是否相等,不相等返回true [ $a != $b]

(3)-z 检测字符串长度是否为0,为0返回true [ -z $a ]返回 false

(4)-n 检测字符串长度是否为0,不为0返回true [ -n $a ]返回 true

(5)$ 检测字符串是否为空,不为空返回true [ $a ]返回 true

3.6文件测试运算符定义

运算符说明举例
-d检测文件是否是目录,如果是,则返回true[ -d $file ]返回返回 false
-f检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回true[ -f $file ]返回返回 true
-r检测文件是否可读,如果是,则返回 true[ -r $file ] 返回返回 true
-w检测文件是否可写,如果是,则返回true[ -w $file ] 返回返回 true
-x检测文件是否可执行,如果是,则返回true[ -x $file ] 返回返回 true
-s检测文件是否为空(文件大小是否大于0),不为空返回 true[ -s $file ] 返回返回 true
-e检测文件(包括目录)是否存在,如果是,则返回true[ -e $file ] 返回返回 true

4.条件运算符

1.[]

2.test

5.流程控制语句

5.1 if判断

A=100
B=200
if [ $A == $B ]
then 
 echo "A is equal to B "
elif [ $A -gt $B ]
then 
 echo "A is greater than B"
elif [ $A -lt $B ]
then 
 echo "A is less than B"
fi

5.2 case语句

case $1 in
"1")
        echo 1
        ;;
"2")
        echo 2
        ;;
"3")
        echo 3
        ;;
*)
        echo "other"
        ;;
esac

5.3 for循环

for有2种方式

第一种:

for i in "$*"  //作为整体输出
do
        echo "The number is $i"
done

for i in "$@"  //一个一个输出
do
        echo "the number is $i"
done

第二种:

#!/bin/bash

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

5.4 while循环

#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
        s=$[$s+$i]
        i=$[$i+1]
done

echo $s

5.5 until循环

#!/bin/bash
a=0
until [ ! $a -lt 5 ]
do
   echo $a
   a=`expr $a + 1`
done

6.read

read -t 7 -p"请输入一个名字在7秒内" NAME
echo $NAME

7.函数

7.1系统函数

basename用于获取基本名称,basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

7.2自定义函数

fuction和sum后面的()可以选择删除其中之一

有2种方式返回结果:

第一种:用return返回值

#!/bin/bash
function sum()
{
    s=0
    s=$[ $1 + $2 ]
    echo "$s"
}

read -p "Please input the number1: " n1;
read -p "Please input the number2: " n2;
sum $n1 $n2;

第二种:用echo返回结果

#!/bin/bash
function sum()
{
    s=0
    s=$[ $1 + $2 ]
    return $s
 }

read -p "Please input the number1: " n1;
read -p "Please input the number2: " n2;
sum $n1 $n2;
echo $?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值