热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

有没有像鱼一样用贝壳检查的鱼?

如何解决《有没有像鱼一样用贝壳检查的鱼?》经验,为你挑选了1个好方法。

对于sh/bash/zsh,有https://github.com/koalaman/shellcheck,但不会支持它的鱼https://github.com/koalaman/shellcheck/issues/209 - 有没有任何麻烦钓鱼?



1> faho..:

据我所知,没有(显然这是不可能证明的).

如果有人要创造这样的东西,就需要就"典型的初学者的语法问题"和"导致shell表现奇怪和反直觉的语义问题"的共识达成共识.

鱼没有很多POSIX sh的疣(因为它被写成对它们的反应).shellcheck自述文件中的一些示例:

echo $1                           # Unquoted variables

Fish的引用行为是完全不同的 - 特别是,没有单词拆分变量,所以不带引号的变量通常可以做你想要的.

v='--verbose="true"'; cmd $v      # Literal quotes in variables

这可能是一次(不成功的)尝试击败分词,这是不必要的.

这个例子很好地说明了这个问题 - 有几十年的sh脚本.缺陷和不直观的行为是众所周知的.事实上众所周知,常见但不正确的变通方法也是众所周知的.这不是鱼的情况.

(显然,其他例子也适用于鱼类,尤其是"经常误用的命令"部分.)


我认识新用户的鱼类中的一些东西经常会绊倒:

不带引号的变量扩展为列表中每个元素的一个参数(因为每个变量都是一个).如果列表为空则包括零,这是一个问题test- 例如test -n $var将返回0,因为fish的测试内置是POSIX兼容的少数部分之一(因为POSIX要求测试,一个参数返回0).如果你总是需要一个参数,请双引号.

{}扩展为空,{x}扩展为"x",这意味着find -exec需要引用,就像一些git commit-ishes(HEAD@{4})一样.


推荐阅读
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • nvmw安装,用于控制node版本;
    之前一直使用的是nodev2.2.0版本,挺说新版本的node解决了npm安装插件产生文件夹结构过深的问题,所以就想更新试试;上网一看才发现,尼玛的node已经到了6.+版本了,好 ... [详细]
  • Shell脚本统计文件行数转自http:www.jb51.netarticle61943.htm示例:row_count.sh文件awk{printNR}row_co ... [详细]
  • delFile:删除文件rmdirFolder:删除文件夹【貌似只能删除空目录】rm-rfFolder:删除非空文件夹【用windows自带的cmd提示 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 和数|这一点_5 个让日常编码更简单的 Python 库
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了5个让日常编码更简单的Python库相关的知识,希望对你有一定的参考价值。今天我们一起来研究一些非常有用的第三方模 ... [详细]
  • nvm如何改node默认版本
    小编给大家分享一下nvm如何改node默认版本,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!nvm改node默认版 ... [详细]
  • 20145216《信息安全系统设计基础》第一周学习总结教材学习内容总结Linux基础1.ls命令ls或ls.显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的 ... [详细]
  • 自动化部署服务——AWS CodeDeploy 快速入门
    https:amazonaws-china.comcnblogschinagetting-started-with-codedeploy作为DevOps和微服务的深入践行者 ... [详细]
  • kali激活成功教程软件_kali渗透教程转载请注明出处:https:blog.csdn.netl1028386804articledetails84895163VeilEvasi ... [详细]
  • idea Terminal配置cmder(增加nodejs,git配置,jdk本地环境)
    下载安装nodejs,git,cmder(绿色版直接解压)配置nodejs环境配置缓存npmconfigsetcacheE:\JetBrains\nodejs\node_c ... [详细]
  • 零入门kubernetes网络实战15>基于golang编程实现给ns网络命名空间添加额外的网卡
    《零入门kubernetes网络实战》视频专栏地址https:www.ixigua.com7193641905282875942本篇文章视频地址(稍后上传)本篇文章主要是想通过g ... [详细]
  • Linux Shell基础脚本执行方式和Bash基本功能
    一概述1Shell是一个命令行解释器,它为用户提供了一个向内核发送请求以便运行程序的界面系统级程序Shell还是一个功能强大的编程语言,易编写,易调试,灵活性较强,Shell是解释 ... [详细]
  • 下载maven:http:maven.apache.orgdownload.cgi解压缩,然后配置环境变量:echo$SHELL  ——-查看当前MacOSX是什么样的Shell如 ... [详细]
  • 微信web开发工具调试h5对于开发人员而言,时间始终是稀缺资源。从苛刻的截止日期到多个项目,再到意外的要求,我们对时间的需求不断。因此&# ... [详细]
author-avatar
蔡少暖_171
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有