Da hat noch ein "$" vor der Variablen für das basename-Argument gefehlt, das muss so aussehen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #!/bin/bash set -o pipefail REGION_X=1925 REGION_Y=900 REGION_WIDTH=1000 REGION_HEIGHT=50 for file in "$@"; do base_dir=$(dirname "$(realpath "$file")") original_dir="${base_dir}/original" upload_dir="${base_dir}/upload" mkdir -p "$original_dir" mkdir -p "$upload_dir" declare order_number=$( convert -crop "${REGION_WIDTH}x${REGION_HEIGHT}+${REGION_X}+${REGION_Y}" \ -density 300 -black-threshold 0.3 "$file" png:- | tesseract stdin stdout 2>/dev/null | grep -oP '\d+' ) if [ -n "$order_number" ] then rename_target="${upload_dir}/${order_number}.pdf" original_copy="${original_dir}/$(basename "$file")" if [ -e "$rename_target" ] then echo "Error: $rename_target would be overwritten; skipping" >&2 elif [ -e "$original_copy" ] then echo "Error: $original_copy would be overwritten; skipping" >&2 else cp -v "$file" "$original_copy" mv -vn "$file" "$rename_target" fi else echo "Error detecting order number in $file; skipping" >&2 fi done |