我的文件名为:/home/cti/10min_test/CTI_poult_20240902005000.csv
并在下面编写了这个 shell 脚本:
CURRENT_TIME=$(date -d "+1 hour +50 minutes" +%Y%m%d%H%M)
CURRENT_TIME_TRIMMED=${CURRENT_TIME:0:11}
FILE_NAME_PART=${CURRENT_TIME_TRIMMED}
echo "FILE_NAME_PART: ${FILE_NAME_PART}"
echo "SOAP PROJECT: Starting SFTP…"
lftp -d -u myuser,mypass sftp://myip:port <<EOF
mput /home/cti/10min_test/CTI_poult_${FILE_NAME_PART}*.csv
bye
EOF
echo "done"
当执行此操作时,仅显示此消息:
FILE_NAME_PART: 20240902011
SOAP PROJECT: Starting SFTP…
*.csv: no files found_test/CTI_poult_20240902011
done
脚本似乎未正确处理“*.csv”。 谁能告诉我到底出了什么问题?
脚本似乎未正确处理“*.csv”。谁能告诉我到底出了什么问题?
为什么脚本无法正确处理“*.csv”,可能是lftp命令中使用
wildcards (*)
无法自动扩展。
mput /home/cti/10min_test/CTI_poult_${FILE_NAME_PART}*.csv
在将文件传递到 lftp 之前,您可以尝试在 shell 中扩展通配符。
#!/bin/bash
CURRENT_TIME=$(date -d "+1 hour +50 minutes" +%Y%m%d%H%M)
CURRENT_TIME_TRIMMED=${CURRENT_TIME:0:11}
FILE_NAME_PART=${CURRENT_TIME_TRIMMED}
echo "FILE_NAME_PART: ${FILE_NAME_PART}"
echo "SOAP PROJECT: Starting SFTP…"
# Expand the file path before passing it to lftp
FILES_TO_UPLOAD=$(ls /home/cti/10min_test/CTI_poult_${FILE_NAME_PART}*.csv 2>/dev/null)
if [ -z "$FILES_TO_UPLOAD" ]; then
echo "No files found for pattern: /home/cti/10min_test/CTI_poult_${FILE_NAME_PART}*.csv"
else
lftp -d -u myuser,mypass sftp://myip:port <<EOF
mput ${FILES_TO_UPLOAD}
bye
EOF
fi
echo "done"