sample.txt 文件包含以下值
1111
2222
3333
具有上述值的帧将用于访问名称为1111
,2222
,3333
的文件夹
我使用下面的代码引用这些值
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
答案 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