shell脚本入门
  1. 什么是 Shell 脚本
  • Shell 脚本是一种解释型的脚本语言,它用于在 Unix/Linux 操作系统的 Shell 环境中自动化执行一系列命令。Shell 本身是一个命令行解释器,它接收用户输入的命令并将其传递给操作系统内核去执行。而 Shell 脚本就是将多个命令组合在一起,按照一定的逻辑顺序来执行,从而实现更复杂的任务。
  • 例如,你可能需要每天备份一个文件目录。手动操作的话,你需要使用cptar等命令来复制或打包文件。通过 Shell 脚本,你可以把这些命令写在一个文件中,设置好执行的时间(比如使用cron),这样系统就会自动按照脚本中的命令来备份文件了。
  1. Shell 脚本的基本结构
  • 第一行:通常以#!/bin/bash开头(这是使用 Bash 作为解释器的情况)。#!是一个特殊的标记,它告诉系统这个脚本应该用哪个程序来解释执行,后面跟着解释器的路径。除了 Bash,还有其他的 Shell 解释器,如/bin/sh(Bourne Shell)、/bin/zsh(Z Shell)等。
  • 注释:在脚本中,以#开头的行是注释。注释用于解释脚本的功能、意图或者某个命令的作用,它不会被执行。例如:# 这是一个备份文件的脚本
  • 命令行:脚本的主要部分是命令行,它可以是系统命令(如lscpmv等)、程序调用(如调用自定义的 Python 或 Java 程序)或者是 Shell 脚本自身的控制结构(如if - elsefor循环等)。
  1. 编写第一个 Shell 脚本
  • 打开一个文本编辑器(如vivimnano),创建一个新文件,例如命名为first_script.sh
  • 在文件中输入以下内容:
#!/bin/bash
# 这个脚本用于打印当前目录下的文件列表
ls -l
  • 保存文件后,需要给这个脚本赋予执行权限。在终端中,进入脚本所在的目录,然后运行chmod +x first_script.shchmod是用于改变文件权限的命令,+x表示给文件添加可执行权限。
  • 现在可以执行这个脚本了,在终端中输入./first_script.sh./表示当前目录),就会看到当前目录下的文件列表以长格式(-l选项的作用)显示出来。
  1. 变量和数据类型
  • 定义变量:在 Shell 脚本中,变量定义很简单,不需要事先声明类型。例如,name="John"就定义了一个名为name的变量,其值为John。变量名通常是字母、数字和下划线的组合,但不能以数字开头。
  • 使用变量:要使用变量的值,可以在变量名前加$符号。例如,echo $name会输出变量name的值。如果变量名和其他字符连在一起,为了避免歧义,可以用{}将变量名括起来,如echo ${name}Doe
  • 数据类型:Shell 脚本中的变量数据类型主要有字符串、整数等。但它没有像高级编程语言那样严格的类型定义。例如,一个变量可以既用于存储数字,又用于存储字符串,不过在进行数值运算等操作时需要注意格式。
  1. 控制结构
  • if - else语句:用于根据条件执行不同的代码块。例如:
#!/bin/bash
num=10
if [ $num -gt 5 ]; then
    echo "这个数字大于5"
else
    echo "这个数字小于等于5"
fi
  • 这里[ $num -gt 5 ]是条件判断部分,-gt表示大于。if语句会检查这个条件是否成立,如果成立就执行if代码块中的内容,否则执行else代码块中的内容。
  • for循环:用于重复执行一段代码。例如,要打印从 1 到 5 的数字:
#!/bin/bash
for i in {1..5}
do
    echo $i
done
  • for循环中的{1..5}表示一个范围,从 1 到 5,每次循环变量i会取这个范围内的一个值,然后执行dodone之间的代码块,也就是打印变量i的值。

这只是 Shell 脚本的入门知识,还有很多高级的主题,如函数、数组、信号处理等等待你去学习。

】】】】】】

判断,大于小于等于………

  1. 数值比较操作符(在[ ]中使用)
  • -lt(Less Than):用于判断左边的数值是否小于右边的数值。例如:
num1=3
num2=5
if [ $num1 -lt $num2 ]; then
    echo "$num1 is less than $num2"
fi
  • 这里,-lt操作符会比较num1num2的值,因为 3 小于 5,所以会输出3 is less than 5
  • -le(Less than or Equal to):判断左边的数值是否小于等于右边的数值。例如:
num1=5
num2=5
if [ $num1 -le $num2 ]; then
    echo "$num1 is less than or equal to $num2"
fi
  • 由于 5 等于 5,满足小于等于的条件,所以会输出相应的内容。
  • -eq(Equal to):检查左右两边的数值是否相等。例如:
num1=10
num2=10
if [ $num1 -eq $num2 ]; then
    echo "$num1 is equal to $num2"
fi
  • 当两个数值相等时,会输出10 is equal to 10
  • -ne(Not Equal to):用于判断左右两边的数值是否不相等。例如:
num1=7
num2=9
if [ $num1 -ne $num2 ]; then
    echo "$num1 is not equal to $num2"
fi
  • 因为 7 和 9 不相等,所以会输出7 is not equal to 9
  • -ge(Greater than or Equal to):判断左边的数值是否大于等于右边的数值。例如:
num1=8
num2=6
if [ $num1 -ge $num2 ]; then
    echo "$num1 is greater than or equal to $num2"
fi
  • 8 大于 6,满足大于等于的条件,所以会输出相应的内容。
  1. 字符串比较操作符(在[ ]中使用)
  • =(Equal to):用于判断两个字符串是否相等。例如:
str1="hello"
str2="hello"
if [ $str1 = $str2 ]; then
    echo "The two strings are equal"
fi
  • 当两个字符串内容相同时,会输出The two strings are equal。需要注意的是,在[ ]中使用==来比较字符串也是可以的,不过=更常见。
  • !=(Not Equal to):判断两个字符串是否不相等。例如:
str1="world"
str2="hello"
if [ $str1!= $str2 ]; then
    echo "The two strings are not equal"
fi
  • 因为worldhello不同,所以会输出The two strings are not equal
  • -z(Zero length):检查字符串的长度是否为零。例如:
str1=""
if [ -z $str1 ]; then
    echo "The string is empty"
fi
  • 当字符串为空时,会输出The string is empty。不过在使用-z时要小心,如果变量没有赋值,可能会导致错误,最好是先给变量赋一个初始值或者在使用前进行检查。
  • -n(Not Zero length):与-z相反,用于判断字符串长度是否不为零。例如:
str1="not empty"
if [ -n $str1 ]; then
    echo "The string is not empty"
fi
  • 因为字符串not empty长度不为零,所以会输出The string is not empty
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇