首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么ksh允许不成对的引号,而bash不允许?

ksh(Korn Shell)和bash(Bourne Again Shell)都是常见的Unix/Linux操作系统中的命令行解释器(shell)。它们在处理引号时有一些差异。

首先,引号在shell中用于定义字符串。在ksh中,允许使用不成对的引号,这是因为ksh的设计目标之一是提供与早期版本的sh(Bourne Shell)兼容性。早期版本的sh并不要求引号成对出现,因此ksh保留了这种特性。

相比之下,bash更加严格,要求引号必须成对出现。这是因为bash的设计目标之一是提供更强大和灵活的功能,同时保持与sh的兼容性。为了确保脚本的可读性和一致性,bash强制要求引号成对使用,以避免潜在的语法错误和歧义。

尽管ksh允许不成对的引号,但在实际开发中,为了代码的可读性和可维护性,建议始终使用成对的引号。这样可以避免潜在的错误和不一致性。

总结起来,ksh允许不成对的引号是为了保持与早期版本的sh的兼容性,而bash要求引号成对出现是为了提供更强大和一致的功能。在实际开发中,建议始终使用成对的引号来编写可读性更好的代码。

(注:以上答案仅供参考,具体情况可能因不同的操作系统版本和shell配置而有所差异。)

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么HashMapkey允许空值,HashTable却不允许

1.从源码分析 HashMap从源码分析: HashMap在put时候会调用hash()方法来计算keyhashcode值,可以从hash算法中看出当key==null时返回值为0。...如果value不为null,key为空,在执行到int  hash = key.hashCode()时同样会抛出NullPointerException异常 2.从设计师角度分析 HashTable是...也许HashTable类设计者当时认为null作为key 和value 是没有什么用。...HashMap是之后版本引进类,它接口Map表达意义更为广泛,也许HashMap设计者认为null作为key和value是有实际意义,所以才允许为null....当然实际项目中,真的是有value为null情况。key为null情况比较少见,但不代表没有。HashMap允许null为key和value应当是类设计者思考让这个类更有用设计吧

1.6K21

heredoc细节妙用

Here文档 here文档,又称作heredoc、hereis、here-字串或here-脚本,是一种在命令行shell(如sh、csh、kshbash、PowerShell和zsh)和程序语言(像Perl...一些语言允许在字串里执行变量替换和命令替换。 here文档最通用语法是 <<紧跟一个标识符,从下一行开始是想要引用文字,然后再在单独一行用相同标识符关闭。...这允许在shell脚本中缩进here文档不改变它们值。(注意在命令行上可能会需要输入 Ctrl-v TAB来真正地输入一个制表符。下边例子用空格模拟制表符;不要复制粘贴。)...可以使用单引号或双引号: $ cat << "EOF" > Working dir $PWD > EOF Working dir $PWD bashksh或zsh中也可以用here-字串: $...这种写法为什么可以正确地工作?因为eval引入了一个子结构,这样 eval...

63850

Linux之shell编程基础

为什么要学习和使用shell? Shell属于内置脚本 程序开发效率非常高,依赖于功能强大命令可以迅速地完成开发任务(批处理) 语法简单,代码写起来比较轻松,简单易学 常见shell种类?...在linux中有很多类型shell,不同shell具备不同功能,shell还决定了脚本中函数语法,Linux中默认shell是/bin/bash(重点),流行shell有ash、bashksh...ksh Korn shell 语法与 Bourne shell 相同,同时具备了 C shell 易用特点。许多安装脚本都使用 kshksh有42条内部命令,与bash相比有一定限制性。...输出命令:# echo 123 注意:输出内容如果包含字母和符号(包含变量),则需要用引号包括起来。如果是纯数字可以包也可以包。 ? ? 注意:这里在运行时一定要写成 ..../test.sh,不是 test.sh,运行其它二进制程序也一样,直接写 test.sh,Linux 系统会去 PATH(环境变量) 里寻找有没有叫 test.sh 只有 /bin, /sbin

3.3K20

初学linux系统管理3

# 设置ssh时使用帐号,如果指定,用户为使用tentakel帐号 #set format="%d %o\n" #set maxparallel="3"    # run...常用参数: tentakel –l   列出可用主机组 tentakel –g groupname‘command’在groupname上执行command,command要用引号引起来。...,其他用户不允许使用该队列 xuser_lists           NONE qconf –sql 可以查看所有的队列 [root@hkdevlogin-1 ~]# qconf -sql...bash,sh,ksh,csh,tcsh          //把默认shell改为bash [root@hkdevlogin-1 ~]# qconf -mq all.q                  ...//编辑队列配置文件 shell                 /bin/bash                                      //把默认shell改为bash 6.

1.4K10

linux shell: Ksh、Csh与Bash探索之旅

ksh提供了很多先进特性和功能,包括但不限于: 命令行编辑:允许用户编辑命令行,使得命令修改更加高效。 作业控制:支持在前台和后台运行程序,并能够在它们之间切换。...以下是一些主要区别: 设计哲学:csh设计更偏向于程序设计,其语法模仿了C语言;kshbash更注重于交互式使用和脚本编程平衡。...脚本编程:虽然三者都支持脚本编程,但bashksh提供编程特性更加丰富,更容易编写复杂脚本。...用户界面:bashksh提供了更多命令行编辑功能,如历史命令搜索和命令行自动补全,csh在这方面的功能较弱。 结论 选择哪个Shell取决于个人需求和偏好。...如果你喜欢C语言语法,可能会偏向于使用csh。如果你需要一个功能强大、易于编写脚本Shell,那么bashksh可能是更好选择。

28910

《Linux操作系统编程》第七章 shell交互功能: 了解shell启动过程,shell功能,shell命令形式,shell程序建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用

7.1.3 shell分类 ▪ Bourne Shell (sh) ▪ C shell (csh) ▪ Korn shell (ksh) 拓展 ▪ Bourne Again shell(bash, sh...在 bash 环境下,输入 help 命令(这也是一条内部命令),就可列出bash所有内部命令。...(1) 单引号和双引号 shell规定单引号禁止变量替换, 元字符$和*等保持其符号本身; 引号允许元字符变量替换. $ a=“he is a student” echo “She said: a...答:主要分为:(1)Bourne Shell (sh)(2)C shell (csh)(3)Korn shell (ksh) 拓展:Bourne Again shell(bash, sh 扩展)、tcsh...(csh 扩展)和Public Domain Korn shell(pdksh, ksh 扩展)。

18610

shell语法

shell语法 一门新语言 Linux中常见脚本 sh:/usr/bin/sh或/bin/sh bash:/bin/bash csh:/usr/bin/csh ksh:/usr/bin/ksh zsh...bash睡眠掉,进入一个新bash子进程 退出:exit或者ctrl+d 环境变量转自定义变量 declare +x 变量名(可以理解为给变量赋予了自定义权限) 字符串 字符串可以使用单引号...,输出数是stdout,例如cout,退出状态是exit code,例如c++中return) command 返回command这条命令stdout,(~上面的`)(7,8等价) $()小括号是获取...\n(此时无需-e进行转义) 文件逻辑运算符 |与&单与和单或是expr中(必须在expr中使用) ||与&&双与和双或是bash中自带,可以直接在bash中使用 也带有短路特性 表达式中exit...-eq a是否等于b(equal)(为什么不是-e,因为-e是转义,已经被使用过,-e也可以是exist中是否存在) -ne a是否不等于b(not equal) -gt a是否大于b(great

10010

Linux中编写Shell脚本

Shell脚本语言很适合用于处理纯文本型数据,Linux系统中几乎所有的配置文件、日志文件,以及绝大对数启动文件都是纯文本类型文件。...shell 包括 Bourne shell (sh)、Korn shell(ksh)、Bourne Again Shell 三种类型。...5、Shell脚本命名应以.sh为扩展名 例如:1.sh 6、成对符号应尽量一次性写出来,然后退格在符号内增加内容,以防止遗漏。...11、脚本中引号、双引号及反引号必须为英文状态下符号。...:允许通过$符号引用其他变量值 单引号:禁止引用其他变量值,$视为普通字符 反撇号:命令替换,提取命令执行后输出结果 全局变量定义方法 export 变量名 位置参数 位置参数是一种在调用 Shell

7.2K10

5 个最常用 Linux 开源 shell

这就是为什么 Unix/GNU Linux shell 比 Windows shell 更强大。在本文[1]中,我们将了解 Unix/GNU Linux 上一些最常用开源 shell。 1....然而,随着时间推移,其他 shell(如 bash)由于其广泛功能和广泛采用变得越来越流行。 尽管如此,Tcsh 和 Csh 仍然是 Unix shell 历史中不可或缺一部分。 3....它结合了 C shell (csh) 和 Bourne shell (sh) 功能,旨在提供两全其美的功能。多年来,ksh 因其先进脚本功能备受赞誉,使其成为许多系统管理员和高级用户最爱。...Zsh 作为 Bourne Shell 扩展诞生,它融合了 Bashksh 和 tcsh 等其他 shell 功能,提供了一组丰富功能和改进交互使用。...其基于 Web 配置允许用户自定义其 shell 体验,而无需深入研究复杂配置文件。 此外,Fish 拥有大量且不断增长社区贡献插件和主题,增强了其功能和外观。

44520

Shell解释器

Bsh是产生较早UNIX Shell程序,实现了最基本命令解释器功能,同时也可以作为脚本编程语言 Csh:是因使用C语言语法风格得名,在用户命令行交互界面上进行了很多改进,并增加了历史,别名...,文件名替换,作业掏等功能,相比Bsh,Csh在更加适用为  用户提供命令交互操作 Ksh:在Bsh和Csh之后出现,结合了两都功能优势,兼具Bsh语法和Csh交互特性....Bash程序 Zsh:更多地基于交互式操作考虑进行设计Shell程序,集成了Bash,Ksh等多种Shell程序优点 二、Bash 2.1、Linux默认使用Shell程序 命令文件位置:/bin...,只需要使用别名即可完成对操作,降低和操作复杂性,提高了输入效率 **标准输入输出和重定向:**Linux使用文件来描述系统硬件,设备等资源。...解释器 $ echo $SHELL /bin/bash 查看系统支持Shell解释器 $ cat /etc/shells /bin/bash /bin/csh /bin/ksh /bin/sh /bin

1.2K20

bash及其特性

shell:外壳 GUI:GNOME,KDE,Xfce CLI:sh,csh,kshbash,tcsh,zsh 程序,进程 允许一个用户登录多次 进程:在每一个进程看来,当前主机上只存在内核和当前进程...进程是程序副本,进程是程序执行实例 bash自身是外部命令 但是它带有自身命令 用户工作环境: bash: shell,子shell bash---bash 某些设定bash之间互不影响(非环境变量...) bash: 命令历史 管道,重定向 命令别名 命令行编辑 命令行展开 命令名通配 变量 编程 命令行编辑 Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u:删除光标到行首...:如果有空格必须要单引号。.../file-$(date +%F-%H-%M-%S).txt bash支持引号: ``:命令替换 "":弱引用,可以实现变量替换 '':强引用,不完成变量替换 文件名通配,gloobbing *:

56130

Linux常用命令13 - echo

echo 命令 echo 是 Bash 和其他大多数流行 shell,如 Zsh 和 Ksh一个 shell 内置程序。 它行为在不同 shell 中略有不同。...还有一个独立/usr/bin/echo 实用程序,但通常会优先使用 shell 内置版本。 我们将介绍 Bash 内置版本 echo。 ?...命令 虽然没有必要,但是将传递给参数包含起来是一个很好编程实践双引号或单引号 当使用单引号时'' 将保留引号内每个字符字面值。...展开变量和命令 举个栗子 下面的例子展示了如何使用 echo 命令: 在标准输出上显示一行文本。 echo Hello, World! Hello, World! 显示一行包含双引号文本。...*.php The PHP files are: index.php contact.php functions.php 重定向到一个文件 您可以使用,操作符将输出重定向 > 或者 >> 到一个文件,不是显示在屏幕上

3.8K30

Shell基础 -- 入门篇

shell 其实就是一个实用工具,准确说, shell 是一个作为用户与 Linux 系统间接口程序,它允许用户向操作系统输入需要执行命令 。...同时,我们还发现有一个特殊家伙混了进来:sbin/nologin。这其实也是一个 shell,使用这个 shell 用户不允许登录当前系统,即使有密码也不行。...exit [tongye@localhost ~]$   如果用户想使用 csh 或者 ksh 系统中没有这个 shell 的话,也可以使用 yum 在线安装获得它们:...三、为什么要使用 shell 脚本 1)简单性   shell 脚本可以很简单对文件、目录层次内容进行操作,使用 shell 脚本将使得许多事情变得十分简洁; 2...由于能够直接在脚本中使用 Linux 命令,因此许多操作将会变得简单易行,这也是为什么 shell 脚本易于开发。

54320

Linux下安装Oracle过程和涉及知识点-系列4

--force 忽略软件包及文件冲突 --noscripts 运行预安装和后安装脚本 --prefix 将软件包安装到由 指定路径下 --ignorearch 校验软件包结构 --ignoreos...,实验中设置内容(.bash_profile): export TMP=/tmp; export TMPDIR=$TMP; 注:之前介绍过,如果/tmp空间不足1G,则需要设置TMP和TMPDIR环境变量...有的帖子还说明需要配置: if [ $USER = "ora11g" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n...65536 else ulimit -u 16384-n 65536 fi fi 但登录时候会提示“-bash: ulimit: max user processes: cannot modify...limit: 不允许操作”,其实之前配置过limits.conf文件: ora11g             soft       nproc   2047 ora11g

43030

Linux下shell简介(三) 原

同样,Linux下除了默认Bourne again shell(bash),还有很多其他shell,例如C shell(csh)、Korn shell(ksh)、Bourne shell(sh)和Tenex...3)双引号“" "” 双引号引用与单引号基本相同,包含在双引号大部分特殊字符可以当作普通字符处理,但是仍有一些特殊字符即使用双引号括起来,也仍然保留自己特殊含义,比如“$”、“\”和“`”。...[root@Server ~]#echo $str1 $/bin/bash 从上面输出可以看出,“$”和“\”在双引号内仍然保留了特殊含义。...Unix/Linux上常见Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说是Shell脚本解释器。...该shell其实是指向/bin/tcsh这样一个shell,也就是说,csh其实就是tcsh。 ksh ksh 是Korn shell缩写,由Eric Gisin编写,共有42条内部命令。

1.4K30

为什么MacOS从Bash迁移至Zsh

Bash 先说下为什么Linux大多使用Bash,其实Bash全称是Bourne Again shell ,它是对Bourne shell重新实现。 为什么要重新实现呢?...这就是为什么Linux发行版本中,大多使用Bash原因了。很容易理解了吧。...Zsh 再来说下Zsh,Zsh其实是对Bash扩展,它基于Bash之上添加了很多新特性,它包括了BashKsh以及tsch一些特性集合。...但MacOS用Bash版本一直是非常陈旧(MacOS使用一直是Bash 3.2,Bash最新已经到5了),以至于到了Catalina时,干脆弃用Bash转而选择Zsh做为默认Shell环境...之所以这样做原因只有一个,那就是版权限制 License限制 Bash在版本3.2之前,它开源协议用是:GPLv2,之后Bash版本就将其协议修改为GPLv3了。

50810
领券