Visit Our UNIX and Linux User Community


bad substitution problem (easy question)


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers bad substitution problem (easy question)
# 1  
Old 07-01-2002
bad substitution problem (easy question)

hi,

what i want to do is to convert all the txt file under my directory to the properties file using the native2ascii command.

however, when i run my script, i got bad substitution error. what's wrong with my script ? pls help. thanks

#!/bin/sh

curDIR=`pwd`
oldExt='txt'
newExt='properties'

for i in ${curDIR}/* ; do
/opt/FJSVawjbk/jdk13/bin/native2ascii $i ${i%$oldExt}$newExt
done
# 2  
Old 07-01-2002
You're not really using the 'txt' entension....

for i in ${curDIR}/*${oldExt} ; do

But that shouldn't cause you problems..... I have tried this

curDIR=`pwd`
oldExt='properties'
newExt='herlihy'

for i in ${curDIR}/*${oldExt} ; do
/usr/develop/j2sdk1_3_0_02/bin/sparc/native_threads/native2ascii $i ${i%$oldExt}$newExt
done

And it works.....can you replace your native2ascii command and try a copy command instead to see it that accepts...make sure that you have some files with the oldExt - otherwise there is nothing for the script to do.
# 3  
Old 07-01-2002
hi,

after my investigation, the error comes from the ${i%$oldExt}

let's say my $i is /export/home/pbn/Japanese/AdmissionControl.txt

and i set oldExt='txt'

so why ${i%$oldExt} will give me bad substitution error?

pls help

thanks
# 4  
Old 07-01-2002
${i%$oldExt} is only part of that substitution....

How are you sure that's the problem...??

try -
echo ${i%$oldExt}$newExt
echo ${i%$oldExt}
in your script. What do you get?
# 5  
Old 07-01-2002
hi, thank u for ur patient and help.

now this is my source code:
#!/bin/sh

curDIR=`pwd`
oldExt='txt'
newExt='properties'

for i in ${curDIR}/*${oldExt}; do
echo $i
echo ${i%$oldExt}$newExt
echo ${i%$oldExt}

# /opt/FJSVawjbk/jdk13/bin/native2ascii $i ${i%$oldExt}$newExt
done


this is my directory and runtime result:

pbn@hercules:[260] >ls
AdmissionControl.txt DeviceList.txt DiffServPHB.txt MiscMessages.txt PolicyListView.txt UserManagement.txt
BandWidthControl.txt DeviceManagement.txt DiffservClass.txt NetworkView.txt Provisioning.txt native.sh*
pbn@hercules:[261] >native.sh
/export/home/pbn/Japanese/AdmissionControl.txt
native.sh: bad substitution
pbn@hercules:[262] >
# 6  
Old 07-01-2002
Okay one more thing before I give up and suggest that it's somthing to do with the OS version you are using and get well in over my head....

Does

echo ${i%$oldExt}

Work? I.e just comment out the line that has the $newExt in it.
# 7  
Old 07-01-2002
same thing, same error.

Smilie
 

Previous Thread | Next Thread
Test Your Knowledge in Computers #566
Difficulty: Easy
Many programming languages use two ampersands, a && b to denote the logical And operator.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bad substitution - ShellCheck says okay

ShellCheck doesn't find any issues with this script. #!/bin/bash # color_meanings: explain meanings of colors used in bash ls eval "$(echo "no:fi:di:ln:pi:so:do:bd:cd:or:mi:su:sg:tw:st:ex" | sed -e 's/:/=/g; s/\;/\n/g')" { IFS=: for i in $LS_COLORS do ... (18 Replies)
Discussion started by: Xubuntu56
18 Replies

2. UNIX for Beginners Questions & Answers

Bad substitution issues.. but why?

i am trying to prepare a train and test dataset, for which i need to randomly split the data into corresponding folders (train,test).. I began on a simple script, but seem to get som weird error messages, that i cannot make sense of?.. what am I doing wrong? #!/bin/bash RED='\033] then... (13 Replies)
Discussion started by: kidi
13 Replies

3. Shell Programming and Scripting

Bad substitution

Cant undestand :) why i have an error on line 2.it is working on my other boxes #!/bin/bash ret=$(echo Q | timeout 5 openssl s_client connect "${1`hostname`}:${2-443}" -ssl3 2> /dev/null) if echo "${ret}" | grep -q 'Protocol.*SSLv3'; then if echo "${ret}" | grep -q 'Cipher.*0000'; then ... (7 Replies)
Discussion started by: kenshinhimura
7 Replies

4. Shell Programming and Scripting

Why I get bad bad substitution when using eval?

Why I get bad replace when using eval? $ map0=( "0" "0000" "0") $ i=0 $ eval echo \${map$i} 0000 $ a=`eval echo \${map$i}` !!!error happens!!! bash: ${map$i}: bad substitution How to resolve it ? Thanks! (5 Replies)
Discussion started by: 915086731
5 Replies

5. Programming

Make: Bad Substitution

Hi, I have a make file which I try to execute, but it failed when it arrived to the line: for r in ${PIPESTATUS }; do if (($r != 0)); then exit $r; fi;done; With the Error: ""make:/bin/sh: Bad substitution"" Or the Error: "make:${PIPESTATUS[...}: Bad substitution" (Depend on the operating... (3 Replies)
Discussion started by: nadne
3 Replies

6. Shell Programming and Scripting

bad substitution error!

Hi All, I'm building a new shell script but i'm facing a problem with one line which is giving "bad substitution" error. Please assist script lines: #!/bin/sh printf "%s: " "Occurrence DATE (YYYYMMDD)"; read DATE shortdate=${DATE#??} o/p: ./test1: bad substitution This command is... (2 Replies)
Discussion started by: Dendany83
2 Replies

7. UNIX for Dummies Questions & Answers

bad substitution

#!/bin/bash a1=( win 12,01,02,03,04 ) a2=( pre 04,05,06 ) a3=( msn 06,07,08,09 ) Given the above arrays, I want the script to return/echo the following in a loop; win 12,01,02,03,04 pre 04,05,06,07 msn 06,07,08,09 But I can't get it to do as such. I've tried; (2 Replies)
Discussion started by: Muhammad Rahiz
2 Replies

8. Shell Programming and Scripting

Array reference - bad substitution

I've created a series of arrays named as follows: row1 row2 row3 . . . row10 Each has 4 elements. I'm trying to echo the array elements out in a for loop. Here's what I have: for ((i=1;i<=10;i++)) do for ((j=1;j<=4;j++)) do eval out=${row`echo $i`} echo -n $out (3 Replies)
Discussion started by: swankgd
3 Replies

9. UNIX for Dummies Questions & Answers

Bash: bad substitution problem...pls help!

I have this situation in my script (simplified): A=C C=10 I need to get number 10 using just A variable. I tried with : echo $`echo $A` - but i get $C string (i need number) Thanks very much for any help! (1 Reply)
Discussion started by: xfouxs
1 Replies

10. Shell Programming and Scripting

Bad Substitution

Need Help... I am getting a bad substitution error on my script on a Solaris Server. However the script has been proven to work on HPUX and Solaris servers... #!/usr/bin/sh # # Set the location of the tzupdater.jar file # JAR=/tmp/tzupdater.jar # <<<<< UPDATE THIS LINE... (3 Replies)
Discussion started by: D_Redd74
3 Replies

Featured Tech Videos