How do you shell expand your variables and why?
How do you shell expand your variables and why?
How do you shell expand your variables and why?
@zephyr echo "${HOME}/docs"
This is the best way. It's also the way the Shellcheck wants sometimes recommends.
@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 .
This isn't true. Shellcheck doesn't insist on braces unless it thinks you need them.
This is the way
I also do this so the variables are more easily spotted.
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
:
$x_
being expanded as ${x_}
."$#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]'
.@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.
This is the right way
find “$(echo $HOME > variable_holder.txt && cat variable_holder.txt)/$(cat alphabet.txt | grep “d”) $(cat alphabet.txt | grep “o”)$(cat alphabet.txt | grep “c”)$(cat alphabet.txt | grep “s”)”
This is the easiest method
when you're paid by character written
no eval
?
This really enterprises my bash.
@ilegadh You don't need cat
in cases when grep "d" alphabet.txt
can read from file too. Edit: But obviously your comment was more of a joke to over complicate it. So never mind then.
What should I search to better understand what is written here? Don't mind learning myself, just looking for the correct keywords. Thanks!
ExplainShell should help
First one, then the other, then I forget the quotes, then I put them in single quotes by accident, then I utilize that "default value" colon syntax in case I'm missing HOME , then I just stick to ~ for the rest of the file.
Typically find "$HOME/docs"
, but with a few caveats:
find $HOME/docs
mv "${HOME:?}/bin" ...
"${basename}_$num.txt"
I do what the linter tells me to: https://github.com/koalaman/shellcheck