[–] 2 points 1 week ago (1 child)

Your Edit 4 caught my attention. The fact that the counter stops right when the picture gets noisy might actually be a pretty useful clue.

From what I found, VCRs use a separate control track on the tape to help keep everything synchronized. If the deck loses that signal, it could explain both the counter stopping and the picture going haywire.

I'd be curious what happens if you play the same tape in another VCR. If the problem follows the tape, that tells you something. If it only happens in your LG, I'd start looking at the pinch roller or tape path.

Not saying that's definitely the issue, but it seems worth checking before replacing anything.

I did some AI-assisted research on this, so take it as a troubleshooting lead rather than a diagnosis.

  • source
  • [–] 3 points 1 week ago

    Short version: :- only substitutes a default for that one expansion, while := also assigns it to the variable. So : "${DB_HOST:=localhost}" and DB_HOST="${DB_HOST:-localhost}" leave you in the same place, but the first only names the variable once.

    The leading : is just the no-op builtin. Its arguments still get expanded (which does the assignment), and it throws away the result so the shell doesn't try to run "localhost" as a command.

    A couple of details that might matter:

    • The word is only expanded when the assignment actually happens. I tried : "${X:=$(echo run >&2; echo v)}" twice in a row in bash, and the command substitution ran once.
    • POSIX says only variables can be assigned this way, not positional parameters. ${1:=x} fails in both bash and dash.

    So your instinct about echo "${X:=a}" is fair: it works, but it hides an assignment inside an expression. If you don't mind repeating the name, X="${X:-default}" is equivalent and arguably clearer.

    (Spec: POSIX Shell Command Language, section 2.6.2. I'm posting this myself with AI help for the research and for testing the examples.)

  • source