当前位置: 首页 > news >正文

Shell脚本中的弱治简写

1. 退出状态码检查

$? -eq 0:检查上一条命令是否成功。
$? -ne 0:检查上一条命令是否失败。

示例
if [ $? -eq 0 ]; then
    echo "命令成功"
fi

2. 命令执行并检查状态

&&:如果上一条命令成功,则执行下一条命令。
||:如果上一条命令失败,则执行下一条命令。

示例
mkdir /tmp/test && echo "目录创建成功"
mkdir /tmp/test || echo "目录创建失败"

3. 变量默认值

${VAR:-default}:如果变量 VAR 未设置或为空,则使用默认值。
${VAR:=default}:如果变量 VAR 未设置或为空,则设置默认值并返回。

示例
echo "用户名:${USER:-guest}"

4. 文件测试

-e:文件或目录是否存在。
-f:是否是普通文件。
-d:是否是目录。
-r:文件是否可读。
-w:文件是否可写。
-x:文件是否可执行。

示例
if [ -f /path/to/file ]; then
    echo "文件存在"
fi

5. 字符串测试

-z:字符串是否为空。
-n:字符串是否非空。
=:字符串是否相等。
!=:字符串是否不相等。

示例
if [ -z "$VAR" ]; then
    echo "变量为空"
fi

6. 算术比较

-eq:等于。
-ne:不等于。
-gt:大于。
-lt:小于。
-ge:大于等于。
-le:小于等于。

示例
if [ $COUNT -gt 10 ]; then
    echo "数量大于 10"
fi

7. 命令替换

$(command):执行命令并返回输出。
`command`:与 $(command) 相同,但推荐使用 $(command),因为它更易读且支持嵌套。

示例
DATE=$(date)
echo "当前时间:$DATE"

8. 数组操作

${ARRAY[@]}:获取数组的所有元素。
${#ARRAY[@]}:获取数组的长度。
${ARRAY[0]}:获取数组的第一个元素。

示例
FRUITS=("apple" "banana" "cherry")
echo "第一个水果:${FRUITS[0]}"

9. 循环简写

for i in {1..5}:循环 1 到 5。
for i in $(seq 1 5):与 {1..5} 相同,但更灵活。

示例
for i in {1..5}; do
    echo "数字:$i"
done

10. 条件简写

[ ]:测试条件(等同于 test 命令)。
[[ ]]:更强大的条件测试,支持逻辑运算符和模式匹配。

示例
if [[ "$VAR" == "value" ]]; then
    echo "变量等于 value"
fi

11. 逻辑运算符

&&:逻辑与。
||:逻辑或。
!:逻辑非。

示例
if [ "$VAR1" = "value1" ] && [ "$VAR2" = "value2" ]; then
    echo "条件满足"
fi

12. 函数简写

function_name() { ... }:定义函数。

示例
greet() {
    echo "Hello, $1!"
}
greet "World"

13. 输入重定向

<:从文件读取输入。
<<:从 Here Document 读取输入。

示例
cat < /path/to/file

14. 输出重定向

>:将输出重定向到文件(覆盖)。
>>:将输出重定向到文件(追加)。

示例
echo "Hello" > /path/to/file

15. 后台执行

&:将命令放到后台执行。

示例
sleep 10 &

总结

Shell 脚本中有许多简写语法,我个人感觉大部分都比较弱治,所以就写这么一篇博客。

相关文章:

  • 平衡树的模拟实现
  • Golang开发
  • ROS合集(一)ROS常见命令及其用途
  • springboot多种生产打包方式教程
  • 循环神经网络中用到的概率论知识
  • YOLOv8 OBB 旋转目标检测模型详解与实践
  • 59. 螺旋矩阵 II
  • 深度洞察:特种设备作业考试的核心要点与备考策略
  • 蓝桥杯 修剪灌木
  • opencv初步学习——图像处理3
  • LeetCode BFS层序遍历树
  • 工作记录 2017-02-04
  • 【css酷炫效果】纯CSS实现照片堆叠效果
  • 2025年通信安全员考试题库及答案
  • xxl-job 执行器端服务器的简单搭建
  • OneCyber 平台
  • 杨校老师课堂之编程入门与软件安装【图文笔记】
  • 将Django连接到mysql
  • numpy学习笔记8:数组属性和基础操作的详细描述
  • C++中pow函数的作用是什么,如何使用它?
  • 中国情怀:时代记录与家国镜相|澎湃·镜相第三届非虚构写作大赛征稿启事
  • 湃书单|澎湃新闻编辑们在读的14本书:后工作时代
  • 中央军委决定调整组建3所军队院校
  • 俄谈判代表团已抵达土耳其,谈判预计在莫斯科时间10时左右开始
  • 盛和资源海外找稀土矿提速:拟超7亿元收购匹克,加快推动坦桑尼亚项目
  • 袁思达已任中国科学院办公厅主任