814 字
4 分钟
Page Views
Linux Bash Shell 脚本编写

&> /dev/null#

可放于echo末尾用于保持桌面整洁

shell脚本#

创建文件时在末尾添加 .sh

在文件中首行写入#!/bin/bash后正常输入命令

保存后可使用sh +路径执行

也可给该文件添加执行权限x

直接输入该路径即可执行

read [用户输入数据] [变量名]:让用户输入数据并赋值到该变量(可在输入数据前加-p ”信息”,在输入数据时显示信息)

let 变量名++/—:使变量自增/自减1

参数#

#:'** 参数数量总和 **'*:’ 所有参数
?:显示上一次命令的执行返回值?:'** 显示上一次命令的执行返回值 **'num:’ 对应位置为第num的参数

测试语句#

格式: 条件表达式

Terminal window
-d:测试文件是否为目录类型
-e:测试文件是否存在
-f:判断是否为一般文件
-r/w/x:测试当前用户是否有r/w/x权限

若判断结果为真则返回0,若判断结果为假则返回其他非零值

例:

Terminal window
[ -d /etc/abcde ]
echo $?

若该文件为目录类型则会输出

Terminal window
0

若该文件不为目录类型则会输出其他非零值

整数比较:#

Terminal window
格式:[ num1 运算符 num2 ]
-eq:是否等于
-ne:是否不等于
-gt:是否大于
-lt:是否小于
-le:是否等于或小于
-ge:是否大于或等于

如遇到报错”[: -gt: unarg operator expected”可用a=$((a))将变量转换为整数类型

字符串比较:#

  • =:比较字符串内容是否相同(!=为不同)
    • 例:[ a=a = b ]:若相同则返回值为非零值,若不同则返回非零值
  • -z:判断字符串内容是否为空
    • 例:[ -z $a ]:若字符串为空则返回0,若不空则返回非零值

逻辑语句:#

  • 一般基于测试结果进行,跟在测试语句后
  • 逻辑与:&&:在测试结果为真时才会执行
    • 例:[ -d /etc/a ] && echo “执行成功”
  • 若判断为假则不会有输出,若判断为真则会输出执行成功
  • 逻辑或:||:在测试结果为假时才会执行
  • 逻辑非:! : 将判断结果取反,直接加在条件表达式的首位

if条件测试语句:#

单分支:

Terminal window
if[条件]为0则执行,不为0则不执行
then (指令)
fi (结束)

双分支:#

Terminal window
if[条件]
then(指令)#若条件为0则会执行该指令
else(指令)#若条件不为0则会执行该指令
fi

多分支:#

Terminal window
if[条件]
then (命令)
elif[条件2]
then (命令2)
else (命令3)
if

在条件中判断为0后会执行对应的then后的命令

for循环:#

Terminal window
for [变量] in [取值列表]
do
命令列表
done

不解释 可配合cat遍历列表文件的所有行

Terminal window
for a in $(cat “./列表文件")
do
echo "$a"
done

while循环:#

while 条件测试操作

Terminal window
do
命令
done

用exit 0跳出循环

Terminal window
case:
case “变量值” in
模式1)
命令
;;
模式2)
命令
;;
............
*
# 以上都无法匹配时执行该命令
esac

例:

read输入字符

Terminal window
case "输入的字符" in
[a-z] | [A-Z] )
echo "字母"
;;
[0-9] )
echo "数字"
;;
*)
echo "特殊字符"
esac
Linux Bash Shell 脚本编写
https://astro.sumi233.top/posts/linux/linux-bash-shell-脚本编写/
作者
Supermini233
发布于
2024-05-27
许可协议
CC BY-NC-SA 4.0