相关疑难解决方法(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万
查看次数

使用分隔符时如何删除readarray添加的新行?

VAR=a,b,c,d
# VAR=$(echo $VAR|tr -d '\n')
echo "[$VAR]"
readarray -td, ARR<<< "$VAR"
declare -p ARR
Run Code Online (Sandbox Code Playgroud)

结果:

[a,b,c,d]
declare -a ARR=([0]="a" [1]="b" [2]="c" [3]=$'d\n')
Run Code Online (Sandbox Code Playgroud)

我怎么能告诉readarray不要添加最后的换行符\n?最新的$符号是什么意思?

bash bash-array

15
推荐指数
2
解决办法
3431
查看次数

将路径规范分解为最长公共前缀 + 后缀

给定任意两个绝对 Unix 路径规范1,可以将每个规范分解为最长公共前缀和特定后缀的串联。例如,

/abc/bcd/cdf     -> /abc/bcd + cdf
/abc/bcd/chi/hij -> /abc/bcd + chi/hij
Run Code Online (Sandbox Code Playgroud)

是否有 Unix 实用程序(或多个实用程序)来计算这种分解?(我添加了“或实用程序”,以防有用于计算最长公共前缀和计算相对路径的单独实用程序。)

(我意识到编写此类实用程序并不是非常困难,但我尽量优先使用或多或少标准的工具而不是定制的工具。)

1我写了“路径规范”而不是“路径”来回避给定文件系统、链接等中的(路径的)存在等问题。

path utilities

5
推荐指数
2
解决办法
1387
查看次数

为什么这个循环是针对空集执行的?

创建一个空目录,然后运行以下代码:

find /empty_directory -mindepth 1 -maxdepth 1 -type d |
while read dir;
do
    echo "Simple find: $dir"
done

printf '%s\n' '-----'                   # Safer than    echo -----

while read dir;
do
    echo "HereDoc find: $dir"
done <<< "$(find /empty_directory -mindepth 1 -maxdepth 1 -type d)"
Run Code Online (Sandbox Code Playgroud)

这是输出:

-----
HereDoc find: 
Run Code Online (Sandbox Code Playgroud)

换句话说,第二个循环使用空变量执行一次。

为什么会这样呢?当没有发现循环的目录时,如何使第二个循环行为正确并且不运行?

bash find here-document

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

标签 统计

bash ×2

bash-array ×1

files ×1

find ×1

here-document ×1

newlines ×1

path ×1

utilities ×1