On a system like:
there is no mention of $[ in the man page. There might be in your version 57.
Interactive results there:
The man page for a modern bash 4.3.30 notes:
The man page for modern dash 0.5.7-4+b1 does not mention $[ at all.
For this code:
Both dash -n and bash -n return nothing on that file.
Executing the code first with bash on that file produces:
then dash:
So my conclusion is that $[ is not portable, it is not equivalent to $((, and it will be removed from future versions of bash, as has been done with dash currently.
Judging from the output comparing $(( to $[, I would say that they have either: a) differing syntax requirements, or b) old code for $[ was not updated. I tend to think the former.
So I would say, in addition to my suggested sequence in a previous post for bashcheck / bashrun / shellcheck, I would advise changing $[ to $((
If you are writing to the lowest common denominator, say sh (which may link to dash as it does in Debian), then you might want look at script checkbashisms to identify bash-only constructs.
Quote:
Originally Posted by wisecracker
At this pont I am going to bow out gracefully and keep a watchful eye on this thread.
Yeah, me too
Best wishes ... cheers, drl
Last edited by drl; 10-04-2016 at 10:38 AM..
Reason: Correct minor typos.
Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant.
THX! (2 Replies)
#!/bin/bash
if then
#echo "infinite loop"
exit 0
fi
when I run this file I get the following error:
./test_infinite_loop: line 5: syntax error near unexpected token `fi'
./test_infinite_loop: line 5: `fi'
:confused: (4 Replies)
CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error.
source $CA_VERSION_DATA
if * ]
then
echo "CA_RELESE $CA_RELEASE is invalid"
exit -1
fi
+ source /etc/ncgl/ca_version_data
++ CA_PRODUCT_ID=samxts
++ CA_RELEASE=6
++ CA_WEEK_NO=7
++... (3 Replies)
Hi all,
How am I read a file, find the match regular expression and overwrite to the same files.
open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat";
open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat";
while (<DESTINATION_FILE>)
{
# print... (1 Reply)
Hello All,
I'm trying to extract the lines between two consecutive elements of an array from a file.
My array looks like:
problem_arr=(PRS111 PRS213 PRS234)
j=0
while } ]
do
k=`expr $j + 1`
sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt
---some operation goes... (11 Replies)
Hello All,
Not sure why this is happening...
When the following If Statement is evaluated for some reason it is creating a file in the CWD called '0'. I've seen this happen
before, just not in an If Statement...
CODE:
if
then
DIR_NAME="$1"
DIR_SIZE=0
STATUS=""
else... (3 Replies)