Hi Peasant,
You are correct in saying that back-quotes are not deprecated as a method of performing command substitution in the standards. And, even though some people would like to, it is unlikely that the standards will formally deprecate back-quoted command substitution because so many existing (otherwise strictly conforming) shell scripts use them.
But, when writing new scripts (unless you intend to have them run on a pure Bourne shell that doesn't have $(command) command substitution), I would always suggest using the $(command) form... Note that:
$(command) command substitutions can be nested,
`command` command substitutions cannot be nested, and
if you need to quote the results of a command substitution where the command contains a double-quoted string, the double quotes inside a $(command) command substitution are not affected by double quotes outside the command substitution; but double quotes inside a `command` command substitution produce undefined results if the command substitution is inside double quotes.
Hi Don, `command` command substitutions can be nested, but the inner backquotes need to be escaped..
Also, IMO double quotes inside a `command` command substitution do not produce undefined results; they need to be properly escaped in accordance to the nesting level, which quickly leads to an escape hell, but it is not impossible. Why anyone would prefer backticks over $( ... ) is beyond me though..
Last edited by Scrutinizer; 01-28-2017 at 11:26 AM..
This User Gave Thanks to Scrutinizer For This Post:
Can someone explain the difference between backticks and system when
evaluated in these if statements:
sub getDate {
print "start date\n";
if ( system("/bin/date") ) {
print "can't get date\n";
exit(2);
}
print "finish date\n";
}
Returns the following:
start date
Thu... (5 Replies)
Hi, I'm trying to do something like this: range= `expr `date '+%m'` - 1` and it does not work. How can I tell it to evaluate an expression within another expression evaluation? I was at first worried that `date '+%m'` would return a string but apparently expr does the math okay normally, so the... (3 Replies)
Hi,
I would like to change some lines in my mysql-dump, because there a syntax problems with some version of mysql.
I 'd like to change
USE ´someDatabase´;
to
USE someDatabase;
(without backticks) using the sed command in the shell
Thanks & best regards
Bernd (5 Replies)
I'm always concerned I might be abusing backticks within my scripts. A current script I'm writing has this for example:
stripscriptname=`echo $scriptname | sed 's/\(.*\)\..*/\1/'`
stripsearch=`echo $searchpattern | tr -d ' ,/'`
Both of these variables are set inside the script (in fact,... (2 Replies)
Hey all. Just a fast question, what is the technical difference between using back ticks and using xargs to perform a command?
Here's an example
Find /mydir -name *.conf |xargs rm
Vs
Rm 'find /mydir -name *.conf'
Is there a performance hit? I know they do the same thing but which is... (1 Reply)
Hi everyone. This is a bit of a perl/linux mixed question. I am trying to redirect STDOUT of chsh by using the following line of perl code.
system ("chsh -s /sbin/nologin $testing 1>/dev/null");
This should redirect STDOUT to /dev/null but it won't do that for some odd reason. Any ideas or... (6 Replies)
Input file:
'data_1'
'data_10'
'data1311'
'235data_13'
Desired output:
data_1
data_10
data1311
235data_13
Can I know how to remove back tick"'" in a file?
Many thanks for advice. (3 Replies)
I have been testing a new script and cannot figure out why my `cat spath` will not execute on the remote machine?
sudo ssh -p 22344 -o "PasswordAuthentication no" -o "HostbasedAuthentication yes" -l testuser 192.168.1.6 "find `cat spath` -depth"
cat: spath: No such file or directory
but... (0 Replies)
I'm trying to make a dialog window that prints the output of grep that takes the output of find. Unfortunately my nested backticks don't work.
Here is the dialog window:
dialog --stdout --title "test" --backtitle "test" --msgbox "Test:\n `grep -l "${tablica}" `find $string``" 16 60I think I... (2 Replies)