shell学习笔记-bash
- 学习视频链接:【30分钟Shell光速入门教程】 https://www.bilibili.com/video/BV17m411U7cC/?share_source=copy_web&vd_source=fb850db820b823205dfea926dc8f484d
- github笔记地址:https://github.com/anwei85/study_note
一、shell简介
1.shell基本知识
shell的定义
shell是一个命令行解释器。
负责接收用户输入的命令,然后调用操作系统的内核去执行这些命令,再把执行的结果返回给用户。

shell的分类:
通常分为如下几种

此外,windows系统上也有微软自己的命令提示符:power shell
shell-bash环境
基本命令
其他常用环境变量(前加echo和$):
home存储当前用户的家目录
path存储系统的查找路径
两者不同,当切换到其他shell版本时,系统$shell不会发生变化,而另一个会跟着切换显示出的版本
直接输入脚本的路径即可切换到该版本,退出输入$exit
基础脚本文件
- 后缀一般为 .sh,但可以写成任何其他的,甚至没有也可以
- 第一行一般为#!/bin/bash,解释这是什么解释器,后面为查到的解释器的路径
- 文件中命令会依次执行
bash执行不需要添加权限,./需要添加权限
特殊变量(前都有$)
#——传递给脚本或函数的位置参数的个数
?——上一个命令的退出状态。0表示没有错误,非0值表示有错误
*——传递给脚本或函数的位置参数,双引号包围时作为一个整体
@——传递给脚本或函数的位置参数
(两个美元符号)——当前shell进程的进程id(PID)
0——当前脚本的名称
1-n——脚本或函数的位置参数
二、实操案例
运行文件前先进入文件所处目录,如cd “/d/400 Tech stack/440 Study Notes/5、Linux/shell”
例1–hello .sh:
#!/bin/bash
echo "Hello Wolrd "
#输出对应内容
date
#输出日期
whoami
#输出用户名

例2–game .sh:
#!/bin/bash
echo "请输入您的姓名:"
read name
#读取用户输入
echo "您好 $name"
#变量前用$符号

例3–game .sh:
参数来给脚本传递信息,常见于无法交互式输入的情况下
可以直接在执行命令后输入值,也可以在命令行中利用export定义环境变量来进行赋值
仅有效一次对话框,exit退出重进后,设定的变量就会失效
圈出的两个文件夹都是存放环境变量的,如果想继续使用变量设定,可以将文件放置.bashrc下

#!/bin/bash
echo "请输入您的姓名:"
#read name
#读取用户输入
name=$1
channel=$2
echo "您好 $name,欢迎来到$channel"
#变量前用$符号

#!/bin/bash
echo "请输入您的姓名:"
#read name
#读取用户输入
#name=$1
#channel=$2
echo "您好 $name,欢迎来到$channel"
#变量前用$符号

例4–game .sh
加入正确提示
echo "您好 $name,欢迎来到$channel"
# 变量前用$符号
number=$(shuf -i 1-10 -n 1)
#i 范围,n 个数;命令赋值给变量需要加$()
echo $number
echo "请输入一个1-10之间的数字"
read guess
if [ "$guess" -eq "$number" ]; then
#-eq 是相等的意思
echo "猜对了"
fi
#可以加[],[[]]或(());分别为基本,扩展和数学表达式;三行为一个完整的条件判断

加入错误提示
#!/bin/bash
echo "您好 $name,欢迎来到$channel"
number=$(shuf -i 1-10 -n 1)
echo $number
echo "请输入一个1-10之间的数字"
read guess
if [ "$guess" -eq "$number" ]; then
echo "猜对了"
else
echo "猜错了"
fi

加入辅助提示
#!/bin/bash
echo "您好 $name,欢迎来到$channel"
number=$(shuf -i 1-10 -n 1)
echo $number
echo "请输入一个1-10之间的数字"
read guess
if [ "$guess" -eq "$number" ]; then
echo "猜对了"
elif [ "$guess" -lt "$number" ]; then
echo "猜小了"
else
echo "猜大了"
fi
#-lt 小于,-gt大于

加入循环,让游戏可以多运行几轮,只到猜中为止
for循环–遍历列表和数组;while循环–在条件成立的情况下一直执行
#!/bin/bash
echo "您好 $name,欢迎来到$channel"
number=$(shuf -i 1-10 -n 1)
echo $number
while [[ "$guess" -ne "$number" ]]
do
echo "请输入一个1-10之间的数字"
read guess
if [[ "$guess" -eq "$number" ]]; then
echo "猜对了"
elif [[ "$guess" -lt "$number" ]]; then
#-lt 小于,-gt大于
echo "猜小了"
else
echo "猜大了"
fi
done

加入用户自主选择是否结束
break 结束循环;continue 跳过当前循环
#!/bin/bash
echo "您好 $name,欢迎来到$channel"
number=$(shuf -i 1-10 -n 1)
echo $number
while true
do
echo "请输入一个1-10之间的数字"
read guess
if [[ "$guess" -eq "$number" ]]; then
echo "猜对了!是否继续游玩(y/n):"
read choice
if [[ "$choice" = "y" ]] || [[ "$choice" = "Y" ]];then
# ||表示或者
number=$((RANDOM % 10 + 1))
echo $number
#生成1-10的随机数,不加1是0-9
continue
else
break
fi
elif [[ "$guess" -lt "$number" ]]; then
#-lt 小于,-gt大于;比较整数用-eq。比较字符串用=
echo "猜小了"
else
echo "猜大了"
fi
done

网硕互联帮助中心






评论前必须登录!
注册