linux - 删除从文本文件中获取的字符串值的空格或换行符

标签 linux

sample.txt 文件包含以下值

1111
2222
3333

使用上述值将是访问名称为 111122223333
的文件夹的框架 我使用以下代码引用这些值

for i in $(cat sample.txt); do cd folder1/$i; done

它给出错误,因为 can't cd : folder1/1111

原因是因为从文件中引用的每个字符串值都有一些足够的空格或换行符..不确定

我尝试了以下命令但没有成功

for i in $(cat sample.txt); do i = $(echo ${i::-1 }); cd folder1/$i; done
for i in $(cat sample.txt); do i = $(echo $i | tr -d "[:space:]"); cd folder1/$i; done
for i in $(cat sample.txt); do cd folder1/$i; done

最佳答案

我猜你没有得到第一行的错误,但只从第二行开始。

如果你成功了

cd folder1/1111

命令

cd folder1/2222

将会失败,因为您已经在 folder1/1111 中。

您应该cd 返回到原始目录或执行cd 以及您想要在子shell 中执行的任何其他操作。

顺便说一句:你不应该阅读带有 for 的行,因为如果你有包含空格的行,这将失败。
参见 https://mywiki.wooledge.org/DontReadLinesWithFor
https://mywiki.wooledge.org/BashFAQ/001 .

这应该可行

while read -r dir
do
    ( cd "folder1/$dir" ) # ( ... ) to use a subshell
    # after leaving the subshell, here we are back in the original directory
done < sample.txt

关于linux - 删除从文本文件中获取的字符串值的空格或换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748824/

相关文章:

c - mmap 分配返回 0xfffffffffffffff4(不是 MAP_FAILED)

sql-server - SQL Server - 无法从 SQL Operations Studio 上的文件还原数据库备份

linux - 在 linux 中比较 2 个数字时预期输出不会出现

linux - 将 Sonatype Nexus 2 安装为服务

r - 虚拟机上带有 Rstudio 的 mxnet 包

c++ - ARM 中的图像处理(埃)

linux - 无法打开 x11 显示 : unable to connect

php - Linux 上的 Web 开发(字体渲染与 Windows 不同)

linux - 进程处于轮询状态?

linux - TCP SYN/SYN ACK 的 IP header 中的 Dscp 值