【发布时间】:2021-04-03 07:12:31
【问题描述】:
观察结果
在编写一个从文件中删除变量 nr 的函数时,该函数包含 n 行,输出文件在每行的第一个位置(第一行之后)有一个额外的空间。
例如:
some text
another text
third text
fourth text
fifth text
前往:
third text
fourth text
fifth text
在删除第一行 n=2 之后。
预期结果
本质上,我打算/期望不添加这些额外的空格:
third text
fourth text
fifth text
代码
执行删除的函数包括:
#!/bin/bash
apt_update() {
source src/hardcoded_variables.txt
# copy target file
cp $INPUT_PATH $REMAINING_LINES_IN_TARGET_AFTER_STARTING_LINE
# get starting line number
starting_line=$(<$STARTING_LINE_QUERY_VAR_PATH)
# remove first starting_line lines from the copied target file
echo -n $(sed "1,${starting_line}d" $REMAINING_LINES_IN_TARGET_AFTER_STARTING_LINE) > $REMAINING_LINES_IN_TARGET_AFTER_STARTING_LINE
}
apt_update "$@"
问题
如何防止在输出文件的第一行之后的每一行的开头添加空格?
【问题讨论】:
-
删除
echo -n $(和)? -
那个奇怪的 echo/sed/redirect 是怎么回事?使用
ed或sed -i就地修改文件。 -
一般在bash中
ALLCAPS变量是为系统或环境变量保留的。 (更短的描述性名称会使事情更容易阅读) -
请参阅mywiki.wooledge.org/…,了解有关您获得空文件的原因的示例和详细信息。
-
无论如何,你得到了额外的空格,因为你没有引用
$(sed ...)位。请参阅我之前链接中的陷阱之后的下一个陷阱。