Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash中使用two FOR循环_Bash_For Loop_Imagemagick - Fatal编程技术网

如何在bash中使用two FOR循环

如何在bash中使用two FOR循环,bash,for-loop,imagemagick,Bash,For Loop,Imagemagick,有人能帮我调查一下吗?我正在尝试使用Imagemagick合并两个图像。一个是纯文本,而另一个有很好的背景。我有超过12000个纯文本和82个背景图像,所以我必须构建两个FOR循环,以便能够随机选择两个图像。但不幸的是,第二个循环不适用于背景图像。它只选择一个并将其与所有纯文本合并,而不是随机合并。 下面是我如何实现它的 for i in $(find /home/user/png -name "*.png"); do for o in $(find /home/user/jpg -n

有人能帮我调查一下吗?我正在尝试使用Imagemagick合并两个图像。一个是纯文本,而另一个有很好的背景。我有超过12000个纯文本和82个背景图像,所以我必须构建两个FOR循环,以便能够随机选择两个图像。但不幸的是,第二个循环不适用于背景图像。它只选择一个并将其与所有纯文本合并,而不是随机合并。 下面是我如何实现它的

for i in $(find /home/user/png -name "*.png"); do 
    for o in $(find /home/user/jpg -name "*.jpg"); do 
       composite -gravity Center $i $o "${i%.*}.jpg"; 
    done
done
事实上,我有超过12000个纯文本和82个背景,所以我必须构建两个For循环,以便能够随机选择两个图像

如果背景和图像文件路径不包含空格字符, 那么下面的技术应该会起作用。 适当地更换所有
find…


您可以将82个背景文件放入一个数组中:

backgrounds=($(find ...))
定义用于拾取随机背景的函数:

randombg() {
    local index
    ((index = RANDOM % ${#backgrounds[@]}))
    echo ${backgrounds[index]}
}
find ... | while read image; do
   bg=$(randombg)
   composite -gravity Center $image $bg "${image%.*}.jpg"
done
然后在图像文件上循环,并为每个文件选择一个随机背景:

randombg() {
    local index
    ((index = RANDOM % ${#backgrounds[@]}))
    echo ${backgrounds[index]}
}
find ... | while read image; do
   bg=$(randombg)
   composite -gravity Center $image $bg "${image%.*}.jpg"
done
事实上,我有超过12000个纯文本和82个背景,所以我必须构建两个For循环,以便能够随机选择两个图像

如果背景和图像文件路径不包含空格字符, 那么下面的技术应该会起作用。 适当地更换所有
find…


您可以将82个背景文件放入一个数组中:

backgrounds=($(find ...))
定义用于拾取随机背景的函数:

randombg() {
    local index
    ((index = RANDOM % ${#backgrounds[@]}))
    echo ${backgrounds[index]}
}
find ... | while read image; do
   bg=$(randombg)
   composite -gravity Center $image $bg "${image%.*}.jpg"
done
然后在图像文件上循环,并为每个文件选择一个随机背景:

randombg() {
    local index
    ((index = RANDOM % ${#backgrounds[@]}))
    echo ${backgrounds[index]}
}
find ... | while read image; do
   bg=$(randombg)
   composite -gravity Center $image $bg "${image%.*}.jpg"
done

使用
shuf
命令创建源源不断的无序*.jpg文件,这些文件在
for
循环中通过
reado
输入:

shuf -r -e $(find /home/user/jpg -name "*.jpg") | 
for i in   $(find /home/user/png -name "*.png") ; do 
    read o
    composite -gravity Center "$i" "$o" "${i%.*}.jpg"
done 

由于没有
bash
数组,因此上述代码默认为POSIX。

使用
shuf
命令创建源源不断的无序*.jpg文件,这些文件在
for
循环中通过
read o
输入:

shuf -r -e $(find /home/user/jpg -name "*.jpg") | 
for i in   $(find /home/user/png -name "*.png") ; do 
    read o
    composite -gravity Center "$i" "$o" "${i%.*}.jpg"
done 

由于没有
bash
数组,因此上述代码默认为POSIX。

非常感谢您的帮助。这很有魅力。我对你的帮助感激不尽。这就像魅力一样。你不应该在这里对循环使用任何
。请参阅。您不应该在此处对
循环使用任何
。看见