Printing asterisk (“*”) in bash shell

You have two problems:

  1. Useless Use of Echo in Backticks

  2. Always quote what you echo

So the fixed code is

a=5
cronSen="*/$a * * * * bash /etc/init.d/ckDskCheck.sh"
echo "$cronSen"

It appears you may also have a Useless Use of Variable, but perhaps cronSen is useful in a larger context.

In short, quote everything where you do not require the shell to perform token splitting and wildcard expansion.

Token splitting;

 words="foo bar baz"
 for word in $words; do
      :

(This loops three times. Quoting $words would only loop once over the literal token foo bar baz.)

Wildcard expansion:

pattern='file*.txt'
ls $pattern

(Quoting $pattern would attempt to list a single file whose name is literally file*.txt.)

In more concrete terms, anything containing a filename should usually be quoted.

A variable containing a list of tokens to loop over or a wildcard to expand is less frequently seen, so we sometimes abbreviate to “quote everything unless you know precisely what you are doing”.

Leave a Comment