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

时间:2019-04-18 15:03:28

标签: 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

1 个答案:

答案 0 :(得分:0)

我想您不会在第一行得到错误,而只是从第二行开始。

如果成功完成了

cd folder1/1111

命令

cd folder1/2222

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

您应该cd回到原始目录,或者在子shell中执行cd和其他任何想做的事情。

顺便说一句:您不应该读取带有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