Bash脚本不是要求用户输入?

时间:2014-12-18 20:21:27

标签: bash

我有这个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 ;.我无法弄清楚为什么我对这种事情很陌生。有任何想法吗? 提前谢谢!

2 个答案:

答案 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

而不是解析lsgenerally considered a cardinal sin),而是使用shell的内置glob扩展来匹配目录$source中的所有内容。我已将-r切换添加到read,即a good idea in general。我还将您的变量名称设为小写。大写变量应保留给内置变量,例如$PATH,您当然不会意外覆盖。

答案 1 :(得分:0)

将cplist.txt设置为读取尝试读取的剩余部分的标准输入。