0

0

LinuxShell常用语法说明_高频写法解析【指导】

舞夢輝影

舞夢輝影

发布时间:2025-12-30 20:14:02

|

680人浏览过

|

来源于php中文网

原创

Shell变量赋值等号两侧不可有空格,引用需加$并推荐双引号包裹;函数内用local声明局部变量;条件判断优先用[[(Bash/Zsh内建,更安全),for遍历文件应避免裸通配符;管道中变量赋值仅限子shell。

linuxshell常用语法说明_高频写法解析【指导】

变量赋值与引用必须区分等号两侧空格

Linux Shell 中 VAR=value 是合法赋值,而 VAR = value 会报错:命令 = 未找到。Shell 把空格当作分隔符,等号两侧不能有空白。

  • 正确写法:name="Alice"count=42
  • 引用变量必须加 $echo $name,不加就是字面量 name
  • 推荐用双引号包裹引用:"$name",避免空格或通配符意外展开
  • 局部变量在函数内用 local var=value,否则默认全局

条件判断用 [ 还是 [[?优先选 [[

[ 是 POSIX 兼容的外部命令(常为 /bin/[),[[ 是 Bash/Zsh 内建关键字,更安全、功能更强。生产脚本若确定运行在 Bash 环境,应默认用 [[

  • [[ 支持正则匹配:[[ $str =~ ^[0-9]+$ ]]
  • [[ 不做单词拆分和路径展开,[[ $path = "/home/*" ]] 不会误触发 glob
  • [ 要求中括号与内容间有空格,[ "$a" = "$b" ] 缺空格会报错
  • 注意:[[ 在 dash/sh 下不可用,跨 shell 可移植脚本才退回到 [

for 循环遍历文件名时别直接写 for f in *.log

裸写 for f in *.log 在无匹配文件时,f 的值就是字面量 *.log,极易引发后续命令误操作(比如 rm *.log 变成 rm '*.log')。

Lateral App
Lateral App

整理归类论文

下载
  • 安全做法:先用 shopt -s nullglob(Bash),让无匹配时展开为空
  • 更通用做法:用数组显式捕获结果:
    files=( *.log )
    if (( ${#files[@]} > 0 )); then
      for f in "${files[@]}"; do
        echo "processing $f"
      done
    fi
  • 处理含空格路径时,务必用 "${files[@]}" 而非 ${files[@]},否则会按空格切分

管道中的变量赋值在子 shell 生效,父 shell 看不到

echo "1 2 3" | while read a b c; do sum=$((a+b+c)); done; echo $sum 最后输出为空——因为 while 在管道右侧运行于子 shell,sum 的赋值不会回传。

  • 解决方法一:用重定向代替管道:
    while read a b c; do sum=$((a+b+c)); done <<< "1 2 3"
  • 解决方法二:用命令组 + 进程替换(Bash):
    while read a b c; do sum=$((a+b+c)); done < <(echo "1 2 3")
  • 简单场景可用 mapfilereadarray 预读全部输入,再处理
  • 这不是 bug,是 POSIX 管道设计使然;依赖管道赋值的逻辑,得从结构上重构
真正难的不是记住语法,是理解哪些看似“能跑”的写法,在边界条件下会静默失败。比如空目录下的通配符、含换行符的变量、子 shell 作用域——这些地方不加验证,上线后才暴露,比语法错误更难 debug。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.11.20

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

81

2023.09.25

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1344

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

698

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

293

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

773

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

571

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

544

2023.07.20

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.2万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号