我有一个bash,它读取一个文件夹名称列表作为输入(全部是数字而不是字母),并试图找到每个文件夹的位置。Find命令根本没有返回任何东西给我。我不知道为什么。然而,如果我输入原始值而不使用变量,它就会工作。
代码:
#!/bin/bash
filename='bat.txt'
n=1
while read line;
do
lien=$(find ./ -type d -name "$line")
# for read each line
echo "line no. $n : $line"
n=$((n+1))
done < $filename
Bat.txt示例:
19223
12233
34434
34434
根据通过注释提供的额外信息,解决方案应该是纠正脚本中的错别字:
#!/bin/bash
filename='bat.txt'
n=1
while read line;
do
line=$(find ./ -type d -name "$line")
# for read each line
echo "line no. $n : $line"
n=$((n+1))
done < $filename
和将bat.txt
的行尾从Windows/DOS转换为Linux/Unix:
sed -i 's/r$//' bat.txt
关于这个问题的更多信息可以在这里找到,执行转换的各种替代方法可以在这里找到。