相关疑难解决方法(0)

在文件末尾添加新行有什么意义?

一些编译器(尤其是 C 或 C++ 编译器)会发出以下警告:

No new line at end of file
Run Code Online (Sandbox Code Playgroud)

我以为这只是 C 程序员的问题,但 github 在提交视图中显示了一条消息:

\ No newline at end of file
Run Code Online (Sandbox Code Playgroud)

对于 PHP 文件。

我理解这个线程中解释的预处理器的事情,但这与 PHP 有什么关系?它是同一include()件事还是与\r\nvs\n主题有关?

在文件末尾换行有什么意义?

files newlines

265
推荐指数
7
解决办法
17万
查看次数

遇到EOF时“读取”退出1的目的是什么?

bash 手册页说明了有关read内置的以下内容:

退出状态为零,除非遇到文件尾

这最近咬了我,因为我-e设置了选项并使用以下代码:

read -rd '' json <<EOF
{
    "foo":"bar"
}
EOF
Run Code Online (Sandbox Code Playgroud)

我只是不明白为什么在这种情况下非成功退出是可取的。在什么情况下这会有用?

shell read

11
推荐指数
2
解决办法
1137
查看次数

Bash Read:读取逗号分隔列表,最后一个元素丢失

下面命令的输出对我来说很奇怪。为什么它不给我返回元素 5?

$ echo '0,1,2,3,4,5' | while read -d, i; do echo $i; done
0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

我希望也能返回“5”。运行GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)。添加逗号有效,但我的输入数据没有逗号。我错过了什么吗?

bash shell-script shell-builtin read

8
推荐指数
3
解决办法
3418
查看次数

bash 中的逻辑所有/任何

我想运行一系列测试(每个测试在不同的 PID 上),并且仅当所有测试成功退出时才得出成功状态。就像是

check $PID1 && check $PID2 && check $PID3
Run Code Online (Sandbox Code Playgroud)

但对于不确定数量的测试。我怎样才能做到这一点?

shell bash

3
推荐指数
1
解决办法
299
查看次数

如何使用固定数量的字符在bash中读取文件?

因此,我使用 bash 读取文件(没有换行符、空格或制表符)。

像这样的东西:

aababcbbcbckqkkqkqhddhkehkjhqkjhsdk
skjhqkdjhqkzdhkzhdkjqzhdhqkjhzdkqzh
Run Code Online (Sandbox Code Playgroud)

虽然在这个例子中有一个换行符,但我正在处理的数据上没有......所以我发现了这一点,因为从技术上讲,一切都被视为“同一行”(因为没有任何换行符或我可以使用的任何分隔符),我尝试读取每个第 N 个字符:

aababcbbcbckqkkqkqhddhkehkjhqkjhsdk
skjhqkdjhqkzdhkzhdkjqzhdhqkjhzdkqzh
Run Code Online (Sandbox Code Playgroud)

(我知道“猫的无用使用”)

我在这里使用的数字只是我发现我可以read使用的最大值(我也更喜欢这样做,因为它可以更快地处理文件)program这里只是一个例子,为了说明。我故意删除上述数据上的换行符、制表符和空格。

现在,虽然我提供的内容有效,但它对文件的最后部分并不完全有效,其中包含的数字少于上述数字……虽然我知道,如果提供给 的分隔符IFS,则 -n选项可以在此之后继续,而不是忽略不适合字符范围的文件的其余部分...

我如何(在 bash、sed 或任何 posix 工具中?)读取每个第 N 个字符范围,同时包括不适合该范围的文件/输入的其余部分?

shell scripting bash

1
推荐指数
1
解决办法
327
查看次数

标签 统计

bash ×3

shell ×3

read ×2

files ×1

newlines ×1

scripting ×1

shell-builtin ×1

shell-script ×1