this post was submitted on 26 Aug 2023
101 points (98.1% liked)

linuxmemes

20880 readers
3 users here now

I use Arch btw


Sister communities:

Community rules

  1. Follow the site-wide rules and code of conduct
  2. Be civil
  3. Post Linux-related content
  4. No recent reposts

Please report posts and comments that break these rules!

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[โ€“] [email protected] 10 points 1 year ago

tl;dr - Second option usually.

I think a huge part of shell programming (besides recognizing when anything more maintainable will do ๐Ÿ˜‚๐Ÿ˜‚๐Ÿ˜‚) is trying to allow others who aren't as familiar to maintain what you've written. Shell is full of pitfalls, not the least of which is quoting and guaranteeing how many arguments you pass to commands and functions.

To me, the whole point of quoting here is to be crystal clear about where command arguments begin and end in spite of variable substitution. For this reason I usually go for the second option. It very clearly describes how I'm trying to avoid a pitfall by wrapping each argument to find in a pair of quotes: in this case, double quotes to allow variable substitution.

Sometimes it's clearer to use the first approach. For example, if the constant parts of one of those arguments contains a lot of special characters, it may make it clearer to use the first approach with the constant parts wrapped in single quotes.

But even then there are more clear ways to create a string out of other strings. For example, the slightly slower, and more verbose use of printf and a variable, and then using that variable as an argument...wrapped in double quotes since it could contain special characters.