For loop 如何在chroot环境中执行for循环

For loop 如何在chroot环境中执行for循环,for-loop,sh,freebsd,chroot,For Loop,Sh,Freebsd,Chroot,执行这个脚本,它在变量i中不返回任何内容,事实上,它并没有创建一个如何克服这个问题的脚本 chroot $ROOT /bin/sh -c "for i in ../autoconf-patch/* ; do patch < $i ; done; ./configure ; make install " chroot$ROOT/bin/sh-c“用于../autoconf patch/*;do patch

执行这个脚本,它在变量i中不返回任何内容,事实上,它并没有创建一个如何克服这个问题的脚本

chroot $ROOT /bin/sh -c "for i in ../autoconf-patch/* ; do patch < $i ; done; ./configure ; make install "
chroot$ROOT/bin/sh-c“用于../autoconf patch/*;do patch<$i;done;/configure;make install”
$i一无所获 /bin/sh:语法错误;“;”意外(应为单词)
这意味着它在命令补丁<$i之后考虑“;”,这意味着$i为空并抛出该错误

尝试使用单引号,例如:

/bin/sh -c 'i=3; echo $i'
chroot $ROOT /bin/sh -c 'for i in ../autoconf-patch/* ; do patch < $i ; done; ./configure ; make install'
如果使用双引号
变量将展开,您可以从示例中尝试以下操作:

/bin/sh -c 'i=3; echo $i'
chroot $ROOT /bin/sh -c 'for i in ../autoconf-patch/* ; do patch < $i ; done; ./configure ; make install'
chroot$ROOT/bin/sh-c'用于../autoconf patch/*;do patch<$i;done;/configure;make install'