万字Linux shell详细教程,包教包会,学不会找我!(二)

简介: 万字Linux shell详细教程,包教包会,学不会找我!

八、Shell echo命令

你可以直接在终端输入这样的单行命令来测试学习,不用一直创建新的文件。

1)显示普通字符串

echo "hello world"

这里的双引号完全可以省略,以下命令与上面实例效果一致:

echo hello world

完整演示如下:

1.png

2)显示转义字符

echo "\"hello world\""

演示如下:

1.png

3)显示换行

使用\n换行:

echo -e "hello\n"

演示如下:

1.png

4)显示不换行

echo -e "chuan! \c" # -e 开启转义 \c 不换行

演示:

1.png

5)显示结果重定向至文件

定向至test7.sh文件:

 echo "hello world" >test7.sh

演示:

1.png

6)显示执行时间

echo `date`

演示:

1.png

这里又到了最后了,补充一下printf跟echo命令是一样的作用,因此我就不演示了,统一用echo来输出。

九、Shell test 命令

1)数值测试

参数和说明如下:

-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

演示一个参数如下:

num1=200
num2=200
if test $[num1] -eq $[num2]
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi  

即:

1.png

完整演示如下:

1.png

到这里我先把前面创建的文件删了:

rm -rf test1.sh test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh 

演示:

1.png

代码中的 [] 执行基本的算数运算,例如:

a=10
b=10
result=$[a+b] # 注意等号两边不能有空格
echo "result結果为: $result"

1.png

完整演示如下(我新建了一个文件夹,免得打乱了):

1.png

我仅仅演示了加法,你也可以去尝试一些别的计算。

2)字符串测试

参数如下:

= 等于则为真
!=  不相等则为真
-z 字符串  字符串的长度为零则为真
-n 字符串  字符串的长度不为零则为真

演示一个如下:

num1="chuan"
num2="chuan"
if test $num1 = $num2
then
    echo '两个字符串相等!'
else
    echo '两个字符串不相等!'
fi

即:

1.png

完整演示如下:

1.png

3)文件测试

参数:

-e 文件名  如果文件存在则为真
-r 文件名  如果文件存在且可读则为真
-w 文件名  如果文件存在且可写则为真
-x 文件名  如果文件存在且可执行则为真
-s 文件名  如果文件存在且至少有一个字符则为真
-d 文件名  如果文件存在且为目录则为真
-f 文件名  如果文件存在且为普通文件则为真
-c 文件名  如果文件存在且为字符型特殊文件则为真
-b 文件名  如果文件存在且为块特殊文件则为真

举一个例子:

if test -e ./test1.sh
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

完整演示如下:

1.png

其它参数可以自行测试。

十、shell 控制流

1)if判断流

if else
fi

语法格式如下:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

举个例子:

-gt 大于则为真

测试代码如下:

a=5
b=6
if test [$a -gt]
then
        echo '大於'
else    
        echo '小於'
fi

完整演示如下:

1.png

再来进阶测试代码如下:

a=5
b=6
if test [$a==$b]
then
        echo '等於'
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

完整演示如下:

1.png

2)for 循环

语法:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

写成一行则是:

for var in item1 item2 ... itemN; do command1; command2… done;

举例子如下:顺序输出当前列表中的数字

for a in 1 2 3 4 5
do
    echo "值依次爲: $a"
done

完整演示如下:

1.png

我们再来个进阶:打印任意数的乘法表

echo "输入一个数:"
read num
for ((  i=1;i<=$num;i++  ))
do
   for ((  j=1;j<=$num;j++  ))
   do
      [  $j  -le  $i  ]  &&  echo -n "${i}*${j}=$((i*j))      "    #判断j是否小于i,当
j大于i时不输出,输出不换行,末尾加一个制表符
   done
   echo ""           #输出一个换行符                
done

完整演示如下:

1.png

3)while循环

语法格式:

while condition
do
    command
done

举例为:依次输出1到6

int=1
while(( $int<=6 ))
do
    echo $int
    let "int++"
done

完整演示如下:

1.png

4)until 循环

until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反。

语法为:

until condition
do
    command
done

condition 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环。

举个例子:使用 until 命令来输出 0 ~ 6 的数字

a=0
until [ ! $a -lt 6 ]
do
   echo $a
   a=`expr $a + 1`
done

完整演示如下:

1.png

5)case … esac

case … esac 为多选择语句,与C语言中的 switch … case 类似,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束.

语法为:

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

举例:提示输入 1 到 4,与每一种模式进行匹配

echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read a
case $a in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

6)跳出循环

break

break命令允许跳出所有循环(终止执行后面的所有循环)。

测试代码如下:

do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
            b

完整演示如下:

1.png

continue

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

测试代码为:

while :
do
    echo -n "输入 1 到 5 之间的数字: "
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的!"
            continue
            echo "游戏结束"
        ;;
    esac
done

完整演示如下:

1.png

是不是有人想问我怎么结束呢?ctrl+c强制结束即可。

相关文章
|
7天前
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
53 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
1月前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
97 32
|
1月前
|
Unix Linux C语言
【Linux】 Linux makefile 教程
本文详细介绍了 Linux 环境下 Makefile 的基本结构、语法和使用方法,并通过一个简单的 C++ 项目示例演示了 Makefile 的实际应用。Makefile 是一个强大而灵活的工具,通过合理配置,可以极大地简化项目的编译和管理过程,提高开发效率。希望本文能帮助您更好地理解和应用 Makefile,在实际项目中高效管理代码的编译和构建。
62 16
|
1月前
|
Unix Linux C语言
【Linux】 Linux makefile 教程
本文详细介绍了 Linux 环境下 Makefile 的基本结构、语法和使用方法,并通过一个简单的 C++ 项目示例演示了 Makefile 的实际应用。Makefile 是一个强大而灵活的工具,通过合理配置,可以极大地简化项目的编译和管理过程,提高开发效率。希望本文能帮助您更好地理解和应用 Makefile,在实际项目中高效管理代码的编译和构建。
55 20
|
2月前
|
Ubuntu Linux 网络安全
Linux磁盘挂接教程
Linux磁盘挂接教程
76 14
|
3月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
3月前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
107 0
|
4月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
142 0
Linux 如何更改默认 Shell
|
7月前
|
Shell Linux 程序员
在Linux中, 什么是shell函数?如何使用它们?
在Linux中, 什么是shell函数?如何使用它们?
|
10月前
|
Shell Linux C语言
Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
325 0