shell脚本学习(一)—变量、数组、流程控制
变量
使用变量
- 使用一个定义过的变量,只要在变量名前面加美元符号 $ 即可。
- 变量名外面的花括号帮助解释器识别变量的边界。
for skill in Ada Coffe Action Java; do
echo "I am good at ${skill}Script"
done
删除变量
- unset命令可以删除变量
字符串
单引号
- 单引号里的任何字符都会原样输出(其中变量无效)
- 单引号字串中不能出现单独一个的单引号
双引号
- 可以有变量
- 可以出现转义字符
获取字符串长度
${#string}
,变量为数组时等价于${#string[0]}
提取子字符串
${string:i:j}
从i下标开始到j下标结束
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
数组
读取数组
- 使用 @ 符号可以获取数组中的所有元素
echo ${array_name[@]}
echo语句
写入输出至文件
>>
是追加文件末尾>
是直接覆盖,相当于擦除后写入
显示命令执行结果
- 使用反引号``
echo `date`
Thu Jul 24 10:08:46 CST 2014
流程控制(if判断,循环)
sh 的流程控制不可为空,如果分支没有语句执行,就不要写
if else
- 语法格式:
if condition
then
command1
command2
...
commandN
fi
写成一行(适用于终端命令提示符):
if condition;then command1;...commandN; fi
if else-if else
- 语法格式:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
for循环
- 语法格式:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
写成一行:
for var in item1 item2 ... itemN; do command1; command2… done;
until循环
- until 循环执行一系列命令直至条件为 true 时停止。
- 语法格式:
until condition
do
command
done
- 举例:输出0-9
#!/bin/bash
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
case ... esac
- 取值可以为变量或常数。
- 输出格式:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具