cd $file_dir
我想做的是从一个目录中添加一个文件附件,如果在那里找不到附件,则查看另一个目录并执行附件
if [ -f "${CLAIM_FILE_PREFIX}"*$(date +"%Y%m%d")*.html ] then
for FILE in ${CLAIM_FILE_PREFIX}*$(date +"%Y%m%d")*.html do
ATTACHMENT_ARGS="$ATTACHMENT_ARGS $FILE"
echo "$ATTACHMENT_ARGS"
done
else
cd $ARCHIVE_DIR
for FILE in ${CLAIM_FILE_PREFIX}*.html do
ATTACHMENT_ARGS="$ATTACHMENT_ARGS $FILE"
echo "$ATTACHMENT_ARGS"
done
fi
我想做的是从一个目录中添加一个文件附件,如果在那里找不到附件,则查看另一个目录并执行附件
如果有人可以帮助解决我面临的这个语法错误
当您将
then
和 do
与 if
和 for
抱在同一行时,您需要一个分号:
if ... ; then
for x in y; do
另外,这是不对的(超出上述范围):
if [ -f "${CLAIM_FILE_PREFIX}"*$(date +"%Y%m%d")*.html ] then
-f
用于测试单个文件名,而不是它们的列表。
使用
~(N)
前缀创建文件数组,以便在 glob 模式不匹配任何内容时数组为空:
typeset -a files=( ~(N)"${CLAIM_FILE_PREFIX}"*$(date +"%Y%m%d")*.html )
然后,您的
if
条件将检查文件的number:
typeset -a files=( ~(N)"${CLAIM_FILE_PREFIX}"*$(date +"%Y%m%d")*.html )
if [ "${#files[@]}" -gt 0 ]; then
for file in "${files[@]}"; do
ATTACHMENT_ARGS+=" $file"
echo "$ATTACHMENT_ARGS"
done
else
cd "$ARCHIVE_DIR"
for file in ~(N)"${CLAIM_FILE_PREFIX}"*.html; do
ATTACHMENT_ARGS+=" $file"
echo "$ATTACHMENT_ARGS"
done
fi
注释
+=
追加到变量PATH=something
,然后想知道为什么你的脚本是坏了。