我的 bash 脚本中需要二元运算符
Binary operator expected in my bash script
使用此 bash 脚本,我检查目录中是否有 *xls 文件,如果是,我将它们发送以使用 ssconvert 转换为 *xlsx。
如果目录中只有一个文件,所有这一切都有效。如果目录中有多个或多个,则会出现“预期二进制运算符”错误。请帮助我修复我的脚本。
#!/bin/bash
while true
do
test -f /home/doc/testy/*.xls && for f in /home/doc/testy/*.xls; do ssconvert "$f" "${f%.xls}.xlsx";
chown www-data:www-data "${f%.xls}.xlsx";
rm -f -- "$f"; done
sleep 10
done
test -f
一次只能处理 1 个文件,但您可以使用 find
代替。我不知道如何将 find 的 -exec
与你的 ${f%.xls}.xlsx
结合起来,所以我让这个看起来有点不同。
#!/bin/bash -u
DIRECTORY=/home/doc/testy/
export EXTENSION_OLD=xls
export EXTENSION_NEW=xlsx
function doConvert {
fOld=""
fNew="${fOld%.$EXTENSION_OLD}.$EXTENSION_NEW"
ssconvert "$fOld" "$fNew";
chown www-data:www-data "$fNew";
rm -f -- "$fOld";
}
export -f doConvert
cd $DIRECTORY
while true; do
find -type f -name "*.$EXTENSION_OLD" -exec bash -c "doConvert {}" \;
sleep 10
done
假设您是故意创建一个无限循环来观看
为新生成的文件指定目录。
您需要检查文件 在 中是否存在 for f in ..
环形。
那你试试看:
while true; do
for f in /home/doc/testy/*.xls; do
if [[ -f $f ]]; then
newfile=${f}x
ssconvert "$f" "$newfile"
chown www-data:www-data "$newfile"
rm -f -- "$f"
fi
done
sleep 10
done
使用此 bash 脚本,我检查目录中是否有 *xls 文件,如果是,我将它们发送以使用 ssconvert 转换为 *xlsx。 如果目录中只有一个文件,所有这一切都有效。如果目录中有多个或多个,则会出现“预期二进制运算符”错误。请帮助我修复我的脚本。
#!/bin/bash
while true
do
test -f /home/doc/testy/*.xls && for f in /home/doc/testy/*.xls; do ssconvert "$f" "${f%.xls}.xlsx";
chown www-data:www-data "${f%.xls}.xlsx";
rm -f -- "$f"; done
sleep 10
done
test -f
一次只能处理 1 个文件,但您可以使用 find
代替。我不知道如何将 find 的 -exec
与你的 ${f%.xls}.xlsx
结合起来,所以我让这个看起来有点不同。
#!/bin/bash -u
DIRECTORY=/home/doc/testy/
export EXTENSION_OLD=xls
export EXTENSION_NEW=xlsx
function doConvert {
fOld=""
fNew="${fOld%.$EXTENSION_OLD}.$EXTENSION_NEW"
ssconvert "$fOld" "$fNew";
chown www-data:www-data "$fNew";
rm -f -- "$fOld";
}
export -f doConvert
cd $DIRECTORY
while true; do
find -type f -name "*.$EXTENSION_OLD" -exec bash -c "doConvert {}" \;
sleep 10
done
假设您是故意创建一个无限循环来观看
为新生成的文件指定目录。
您需要检查文件 在 中是否存在 for f in ..
环形。
那你试试看:
while true; do
for f in /home/doc/testy/*.xls; do
if [[ -f $f ]]; then
newfile=${f}x
ssconvert "$f" "$newfile"
chown www-data:www-data "$newfile"
rm -f -- "$f"
fi
done
sleep 10
done