我需要编写一个bash脚本,将文件复制到 dir2 ,与文件名中的字符数匹配,并将给定的int值作为脚本的参数给出。我试图做一些事情,但我根本无法复制文件。
read number
list=`for file in *; do echo -n "$file" | wc -m; done`
for file in $list
do
if [ $file -eq $number ]
then
cp file dir2
fi
done
答案 0 :(得分:1)
在您的代码中,$
是文件名长度列表,而不是文件名。所以$ file只是一个数字。您还错过了$file
上的前导wc
。
您不需要使用${#name}
程序,您可以使用while [[ $number != +([0-9]) ]]
do
read -p "Enter number: " number
done
for file in *
do
if (( ${#file} == $number ))
then
cp "$file" dir2
fi
done
获取变量名称的长度。我想你需要这样的东西:
sed