#!/bin/sh shop="$1" askwithdefault() { read -p "$1 [$2] " answer echo "${answer:-$2}" } transaction="$(mktemp)" trap "rm '$transaction'" EXIT KILL exec 3> "$transaction" date="$(askwithdefault 'Transaction date?' "$(date +'%Y-%m-%d')")" printf '%s %s\n' "$date" "$shop" >&3 while account="$(hledger accounts desc:"$shop" | sk)"; do read -p "Price? " price read -p "Comment? " comment printf " %s%$((66 - ${#account}))s" "$account" "€$price" >&3 if [ -n "$comment" ]; then printf ' ; %s\n' "$comment" >&3 else printf '\n' >&3 fi done exec 3>&- cat "$transaction"