this post was submitted on 26 Aug 2023
64 points (94.4% liked)

Programming

17534 readers
311 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 60 points 1 year ago (5 children)
[–] bloopernova 13 points 1 year ago* (last edited 1 year ago) (2 children)

This is the best way. It's also the way the Shellcheck ~~wants~~ sometimes recommends.

[–] [email protected] 8 points 1 year ago (1 children)

@bloopernova As you mention it, here the links for anyone interested: Online tool https://www.shellcheck.net/ and you can install it locally too https://github.com/koalaman/shellcheck .

[–] hascat 4 points 1 year ago (1 children)

While this looks like a handy tool, it does make me think shell scripting itself needs a cleaner approach than what we have currently.

[–] gamma 6 points 1 year ago* (last edited 1 year ago) (1 children)
[–] bloopernova 3 points 1 year ago

Oh! I didn't know that (um, obviously lol)

I'll edit my comment.

[–] drew_belloc 5 points 1 year ago

This is the way

[–] [email protected] 4 points 1 year ago

I also do this so the variables are more easily spotted.

[–] [email protected] 3 points 1 year ago

This is the right way

[–] gamma 3 points 1 year ago (2 children)

This has never stuck with me, and I hadn't thought about why until now. I have two reasons why I will always write ${x}_$y.z instead of ${x}_${y}.z:

  • Syntax highlighting and shellcheck have always caught the cases I need to add braces to prevent $x_ being expanded as ${x_}.
  • I write a lot of Zsh. In Zsh, braces are optional in way more cases. "$#array[3]" actually prints the length of the third item in array, rather than (Bash:) the number of positional parameters, then the string 'array[3]'.
[–] [email protected] 3 points 1 year ago

@gamma I just use them out of consistency and principle, so I don't need to think in which case it is required or not.

[–] [email protected] 1 points 1 year ago (1 children)

I will always write ${x}_$y.z instead of ${x}_${y}.z:

The difference between the two seems different to what's in the OP. Is there a typo here?

[–] gamma 1 points 1 year ago

in the OP

My reply is to a commenter who said they prefer "${HOME}/docs" over both options in the original image ("$HOME/docs" or "$HOME"/docs). Many people prefer to always include braces around the parameter name out of consistency, instead of only when they are required.

My comment explained why my habit is to only include braces when they are necessary.