Questions tagged «bourne-shell»

4
Unix Bourne Shell中的数组
我正在尝试在Bourne shell(/bin/sh)中使用数组。我发现初始化数组元素的方法是: arr=(1 2 3) 但是它遇到了一个错误: syntax error at line 8: `arr=' unexpected 现在我发现该语法的帖子说的是for bash,但是我找不到Bourne shell的任何单独语法。语法/bin/sh也一样吗?

3
使用^作为外壳元字符
我今天写了一个小脚本,其中包含 grep -q ^local0 /etc/syslog.conf 在审查过程中,一位同事建议^local0引用该词,因为^在Bourne外壳中意为“烟斗”。对此声明感到惊讶,我试图查找提及此内容的任何参考。我在互联网上没有发现任何暗示这是问题的信息。 但是,事实证明,bsh在AIX 7上的实现(声称是Bourne shell)实际上具有以下行为: > bsh $ ls ^ wc 23 23 183 $ ls | wc 23 23 183 我尝试过的其他“ Bourne shell”实现^都没有这种行为的方式(也就是说,根本不被认为是shell元字符)。我sh在CentOS(实际上是bash)和shFreeBSD(不是bash)上进行了尝试。我没有很多其他系统可以尝试。 这是预期的行为吗?哪些壳被认为^是管道元字符?

4
如何在源代码中的read -p提示符下将长字符串分成多行?
我正在编写将以方式运行的安装脚本/bin/sh。 有一行提示输入文件: read -p "goat can try change directory if cd fails to do so. Would you like to add this feature? [Y|n] " REPLY 我想把这条长行分成多行,以使它们都不超过80个字符。我说的是脚本源代码中的几行;与执行脚本时要在屏幕上实际打印的行无关! 我尝试过的 第一手方法: read -p "goat can try change directory if cd fails to do so. " \ "Would you like to add this feature? …


1
IFS null是否与未设置IFS相同?
我在这里阅读了一个名为“ 了解IFS”的问题。我很惊讶,因为答案和注释都引用了POSIX,其中指出IFS =与取消设置IFS不同。如果取消设置IFS,则显然使用默认值。如果将IFS设置为null,则没有拆分器。我知道我对此有不同的看法,我在书签中发现了这一点: Bourne Shell编程 $ IFS 脚本中的第一个语句应该是 IFS = 将输入字段分隔符重置为其默认值。否则,您将从用户那里继承$ IFS,该用户可能已将其设置为一些奇怪的值,以便使sh解析字符串的方式与您期望的方式不同,并引起怪异的行为。 那么前段时间是真的还是作者错了?


2
如何在POSIX Shell脚本中创建算术循环?
我知道如何在中创建算术for循环bash。 如何在POSIX Shell脚本中进行等效循环? 由于有多种方法可以实现相同的目标,请随时添加您自己的答案并详细说明其工作原理。 一个这样的bash循环的示例如下: #!/bin/bash for (( i=1; i != 10; i++ )) do echo "$i" done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.