#!/bin/bash
for x in ontwikkelkaart
do
echo "***";
echo ${x};
ssh ${x}@localhost "
find ~/public_html/wp-content/themes/ -type f -name "*.webp" | awk '{ gsub(".webp$", "") ; print $0 }' | xargs -i sh -c 'if [ ! -f "{}" ]; then echo {}.webp; fi' \;
"
done
我有上面的脚本通过SSH连接到服务器,它检查是否有没有jpg / png的webp文件作为源文件;并回显rm的“文件名”。
命令:
find ~/public_html/wp-content/themes/ -type f -name "*.webp" | awk '{ gsub(".webp$", "") ; print $0 }' | xargs -i sh -c 'if [ ! -f "{}" ]; then echo {}.webp; fi' \;
当我在服务器的命令行上(通过SSH)运行它时,它可以工作,但是当我尝试在for循环中运行它时,由于“”而无法正常工作。
有人(试图)解释为什么上面的代码不起作用吗?
答案 0 :(得分:1)
尝试使用heredoc:
ssh -q -T ${x}@localhost 2> /dev/null <<'EOF'
find ~/public_html/wp-content/themes/ -type f -name "*.webp" | awk '{ gsub(".webp$", "") ; print $0 }' | xargs -i sh -c 'if [ ! -f "{}" ]; then echo {}.webp; fi' \;
EOF