我有这个bash代码:
#!/bin/bash
ls "$SOURCE" > cplist.txt
cat cplist.txt | while read FILE; do
echo "Would you like to copy $FILE? y/n"
read ANSWER
if [ "$ANSWER" = "y" ]; then
cp -v "$FILE" ./Destination;
else
echo "File NOT coppied"
fi
done
想法是列出文件夹中的所有文件,然后询问用户要将每个文件复制到目标文件夹。目前此脚本不允许用户输入:"您要复制$ file吗? Y / N&#34 ;.我无法弄清楚为什么我对这种事情很陌生。有任何想法吗? 提前谢谢!
答案 0 :(得分:1)
当您使用两次单独的read
来电时,您遇到了问题,但是您要让事情变得比他们需要的更复杂。尝试这样的事情:
#!/bin/bash
for file in "$source"/*; do
echo "Would you like to copy $file? y/n"
read -r answer
if [ "$answer" = "y" ]; then
cp -v "$file" ./Destination;
else
echo "File NOT copied"
fi
done
而不是解析ls
(generally considered a cardinal sin),而是使用shell的内置glob扩展来匹配目录$source
中的所有内容。我已将-r
切换添加到read
,即a good idea in general。我还将您的变量名称设为小写。大写变量应保留给内置变量,例如$PATH
,您当然不会意外覆盖。
答案 1 :(得分:0)
将cplist.txt设置为读取尝试读取的剩余部分的标准输入。