Bash 将脚本的输出用于其他命令

Bash 将脚本的输出用于其他命令,bash,shell,output-redirect,Bash,Shell,Output Redirect,大家好 我编写了一个脚本,用于将文件复制到多个文件,并为副本生成随机名称。 这部分工作正常,但是,当我尝试在创建的副本上运行多组命令时,它不会获取所有副本,而是仅获取一个副本,并在这个副本上运行命令 以下是脚本: #!/bin/bash ## Script for copying a file to multiple files (mass copy) and generating random name to each file ## ## Main script # VARS COUNTE

大家好

我编写了一个脚本,用于将文件复制到多个文件,并为副本生成随机名称。 这部分工作正常,但是,当我尝试在创建的副本上运行多组命令时,它不会获取所有副本,而是仅获取一个副本,并在这个副本上运行命令

以下是脚本:

#!/bin/bash
## Script for copying a file to multiple files (mass copy)  and generating random name to each file
##
## Main script
# VARS
COUNTER=0

echo "File to copy ? (full name)"
read filename
echo "Please select extension to new files (doc/pdf/exe/etc...)"
read ext
echo "How many copies to make ? (number)"
read numcopies
     while [  $COUNTER -lt $numcopies ]; do
         for i in $( cat /dev/urandom | tr -cd 'a-f0-9' | head -c 64 ); do
             cp $filename $i.$ext
             ls $i.$ext > /tmp/newfiles.txt
         done
     let COUNTER=COUNTER+1
     done
#
## Diff test for files generated on this script only
# VARS
DIFF=$(diff $filename $i.$ext)

if [ "$DIFF" = "" ]
then
    echo "Diff all files succesfully"
fi

#
## md5sum test for files generated on this script only
# VARS
TMP=/tmp/md5sum_test.txt
MD5=$(md5sum $filename $i.$ext > $TMP)

grep $filename $TMP | awk '{print $1}' | while read line;
do
    GREP=$(grep -v $line $TMP)

    if [ "$GREP" == "" ]
    then
      echo "md5sum's are matching"
    else
      echo "operation failed"
    fi
done
exit 0
这是我得到的结果:

root@myserver:/my/directory # ./copier.sh 
File to copy ? (full name)
oren.doc
Please select extension to new files (doc/pdf/exe/etc...)
doc
How many copies to make ? (number)
20
Diff all files succesfully
md5sum's are matching
root@myserver:/my/directory # cat /tmp/newfiles.txt 
bbfb46e1a0fabeab9343839dd2b8e13a254847f0890f809959decc669abd06fd.doc
root@myserver:/my/directory # cat /tmp/md5sum_test.txt 
cc8bba3d80207cd0b9832eddf7781743  oren.doc
cc8bba3d80207cd0b9832eddf7781743  bbfb46e1a0fabeab9343839dd2b8e13a254847f0890f809959decc669abd06fd.doc
提前感谢您的反馈…

此:

ls $i.$ext > /tmp/newfiles.txt
应附加,而不是覆盖:

ls $i.$ext >> /tmp/newfiles.txt

你不可能减少复制可疑行为所需的代码量?(这往往会导致你在问别人之前就发现问题。)嗨,我在这和网上花了很多好的时间,当我用脚本运行命令时,它可以正常工作,但我忽略了重定向输出以便在脚本上重新使用它的要点。嗨,谢谢你的提要。这解决了脚本上的文件列表问题,但diff和md5sum仍然只使用输出中的最后一个文件。。。