一些编译器(尤其是 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主题有关?
在文件末尾换行有什么意义?
bash 手册页说明了有关read内置的以下内容:
退出状态为零,除非遇到文件尾
这最近咬了我,因为我-e设置了选项并使用以下代码:
read -rd '' json <<EOF
{
"foo":"bar"
}
EOF
Run Code Online (Sandbox Code Playgroud)
我只是不明白为什么在这种情况下非成功退出是可取的。在什么情况下这会有用?
下面命令的输出对我来说很奇怪。为什么它不给我返回元素 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)。添加逗号有效,但我的输入数据没有逗号。我错过了什么吗?
我想运行一系列测试(每个测试在不同的 PID 上),并且仅当所有测试成功退出时才得出成功状态。就像是
check $PID1 && check $PID2 && check $PID3
Run Code Online (Sandbox Code Playgroud)
但对于不确定数量的测试。我怎样才能做到这一点?
因此,我使用 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 个字符范围,同时包括不适合该范围的文件/输入的其余部分?