the construct $(command) is called command substitution and evaluates to the output of command and you use it correctly for the assignment of the variables DAY, MONTH and YEAR. You do not want to use command substitution when you assign the values for DIR1 and DIR2.
It would be safer to wrap the entire assignment in double quotes as a common practice so that if you accidentally assign a space to either variable, then the assignment to DIR1 or DIR2 will not fail:-
I always clearly mark the variable name with curly braces { & } to ensure I don't confuse the variable with any literal text or underscores that follow. You can get trapped with things like this:-
This is because the assignment is looking for variable V1_Goodbye (equivalent to ${V1_Goodbye} ) which has not been set.
I would also suggest that you could consolidate commands such that you just do this:-
Of course, it depends what you use the values for elsewhere.
Yes, a consolidation makes sense. ""Quoting of variables is never a mistake. Especially beginners should do it always!
But - now for the advanced user - the quoting of an assignment value is only needed if there is a literal space.
Not if the space comes from a variable
The latter is not an assignment - the argument for the echocommand must be quoted!
Other
In all other cases the shell does first variable substitution then word splitting then globbing.
Last but not least, the [ ] is a false friend:
In fact the [ is a command and its arguments must be quoted!
I have another question on command substitution.
The same script, but different command substitution.
I simply run this command from the terminal :
As you see, I get the dates of the file generated in the directory.
However, when I attempt to use this command as a substitute, like this, I get a diferent output :
It all displays in one line. Why is this, and how do I get it to display in two separate lines like the command above this?
Actually the main output I want is to get ONLY the day section of the whole date. Means I want to extract only '18' from 2015-08-18. This is for all the files in the directory.
Therefore, I use this command :
However, as you can see, the error is shown. Perhaps if
displays two separate lines, the error above will not happen?
How do I display ONLY the day part of the whole date for a file in a directory?
Last edited by anaigini45; 05-05-2017 at 06:12 AM..
getting error as below while executing script in linux.
OS version:
Linux VGP-3GPSDB-LX 3.10.0-514.el7.x86_64 #1 SMP Wed Oct 19 11:24:13 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
./imxtract.sh: line 395: unexpected EOF while looking for matching ``'
./imxtract.sh: line 402: syntax error:... (1 Reply)
I have the following script test.sh owned by dwdev account and group dwdev, the permissions on the script are as follows.
-rw-r-x--- 1 dwdev dwdev 279 Sep 17 13:19 test.sh
Groups:
cat /etc/group | grep dwdev
dwdev:x:704:dwdev
dwgroup:x:725:dwdev
writers:x:726:dwdev
User:
cat /etc/passwd |... (3 Replies)
hi all,
i am getting libssh2 error while executing script in RHEL 6, when i locate that file its not there below is the ouput of this
# locate libssh2_agent_init
# cat /etc/issue
Red Hat Enterprise Linux Server release 6.1 (Santiago)
Kernel \r on an \m
how do i resolve this issue, i... (1 Reply)
Hi,
I am not able to figure out what the problem is:
getting the following error
sqltst.sh: 1: not found
here is the script
#!/bin/sh
. /home/dev1/.profile
. /home/dev1/.infenv
`sqlplus -s $REPDB_LOGON << EOF
SET SERVEROUT ON
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL... (4 Replies)
Hi
Please assist. Im getting an error while execuing the script name d "cdsnd.basel.cd_new
" as siiadm user. Thanks.
siiadm> ls -l
total 64
-rwxr-xr-x 1 siiadm sboadm 1004 Sep 17 2008 cdsnd.basel.cd
-rwxr-xr-x 1 siiadm sapsys 998 Nov 16 09:14 cdsnd.basel.cd_new... (1 Reply)
Hi ,
I m getting an error after executing the script.
My script.
Script is used to find out the date on 8 different machines(mentioned in SERVERNAMES file).
I have added public key to avoid ssh password and ssh without password working fine.
#!/bin/sh
fn_VMFind()
{
Date=`ssh -t... (5 Replies)
I am executing the below in telnet
#!/usr/bin/ksh
File1=simple.txt # The file to check
LogFile=simple.log # The log file
DelayMax=30 # Timeout delay
Tolerance=2
# BEGIN ##############################
while true
do
StampNow=$(date +%s)/60 # stamp in minutes
... (3 Replies)
Hello
I am executing the following script
nawk 'NR == 1 || substr($0,63,5) ~ /H... / && \
_++ == 2 { fn && close(fn); fn = "part_" ++c; _ = 1 }
{ print > fn }' sample.dat
When i execute as it is it is executing fine. but when i execute the whole script as a single line like below
... (2 Replies)