Sponsored Content
Full Discussion: Bad Substitution
Top Forums Shell Programming and Scripting Bad Substitution Post 302106273 by D_Redd74 on Wednesday 7th of February 2007 02:27:26 PM
Old 02-07-2007
Question 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 >>>>>
#
# Clear out log files if they exist

if [[ -f /tmp/${0##*/}.all_javas ]]; then
rm -f /tmp/${0##*/}.all_javas
fi
if [[ -f /tmp/${0##*/}.old_javas ]]; then
rm -f /tmp/${0##*/}.old_javas
fi
if [[ -f /tmp/${0##*/}.cur_javas ]]; then
rm -f /tmp/${0##*/}.cur_javas
fi

# Find all the files named java on the system
# and save the list in a log of all java files
find / -fstype nfs -prune -o -fstype autofs -prune -o -name java -type f -print -o -name java -type l -print | tee /tmp/${0##*/}.all_javas | \
while read JAVA; do
exec 2>/dev/null # Ignore error messages
$JAVA -version >/dev/null 2>/dev/null # Check how java responds
if (( $? == 0 )); then # If RC=0, it is vaid
# Find out the version of Java this is
VERSION=$($JAVA -version 2>&1 | awk 'NR==1 {print substr($3,4,1)}')
if (( $VERSION > 3 )); then
# If the version is greater than 1.3, go ahead and update it
print "$($JAVA -version 2>&1 | awk 'NR==1 {print $3}')\t$JAVA" >> /tmp/${0##*/}.cur_javas # Save list of current Javas
# Check whether this java has been updated or not
$JAVA -jar $JAR -t >/dev/null 2>&1
if (( $? > 0 )); then # If not updated, update it
print "Updating $JAVA"
$JAVA -jar $JAR -u
else # Otherwise, print a message already updated
print "$JAVA already updated"
fi
else # This cmd is an old version of Java
print "$($JAVA -version 2>&1 | awk 'NR==1 {print $3}')\t$JAVA" >> /tmp/${0##*/}.old_javas # Save list of old Javas
fi
fi
done
#
 

10 More Discussions You Might Find Interesting

1. 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

2. Shell Programming and Scripting

bad substitution error in ksh

hi, i created a shell script having the following content: #! /usr/bin/ksh FROM="myemail@domain.com" MAILTO="someemail@domain" SUBJECT="TEST" BODY="/export/home/adshocker/body.txt" ATTACH="/export/home/adshocker/attach.prog" echo $ATTACH ATTACH_NAME="${ATTACH##*/}" echo $ATTACH_NAME... (5 Replies)
Discussion started by: adshocker
5 Replies

3. Shell Programming and Scripting

bad substitution error in ksh

Hello, In bash I can use the following: TMP=12345 MID=${TMP:1:1} the expected result is: 2 but when using KSH I'm getting a ''bad substitution" error. What is the correct syntaxin ksh? Thanks (2 Replies)
Discussion started by: LiorAmitai
2 Replies

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
SMRSH(8)						      System Manager's Manual							  SMRSH(8)

NAME
smrsh - restricted shell for sendmail SYNOPSIS
smrsh -c command DESCRIPTION
The smrsh program is intended as a replacement for sh for use in the ``prog'' mailer in sendmail(8) configuration files. It sharply limits the commands that can be run using the ``|program'' syntax of sendmail in order to improve the over all security of your system. Briefly, even if a ``bad guy'' can get sendmail to run a program without going through an alias or forward file, smrsh limits the set of programs that he or she can execute. Briefly, smrsh limits programs to be in a single directory, by default /usr/adm/sm.bin, allowing the system administrator to choose the set of acceptable commands, and to the shell builtin commands ``exec'', ``exit'', and ``echo''. It also rejects any commands with the charac- ters ``', `<', `>', `;', `$', `(', `)', ` ' (carriage return), or ` ' (newline) on the command line to prevent ``end run'' attacks. It allows ``||'' and ``&&'' to enable commands like: ``"|exec /usr/local/bin/filter || exit 75"'' Initial pathnames on programs are stripped, so forwarding to ``/usr/ucb/vacation'', ``/usr/bin/vacation'', ``/home/server/mydir/bin/vaca- tion'', and ``vacation'' all actually forward to ``/usr/adm/sm.bin/vacation''. System administrators should be conservative about populating the sm.bin directory. For example, a reasonable additions is vacation(1), and the like. No matter how brow-beaten you may be, never include any shell or shell-like program (such as perl(1)) in the sm.bin direc- tory. Note that this does not restrict the use of shell or perl scripts in the sm.bin directory (using the ``#!'' syntax); it simply dis- allows execution of arbitrary programs. Also, including mail filtering programs such as procmail(1) is a very bad idea. procmail(1) allows users to run arbitrary programs in their procmailrc(5). COMPILATION
Compilation should be trivial on most systems. You may need to use -DSMRSH_PATH="path" to adjust the default search path (defaults to ``/bin:/usr/bin:/usr/ucb'') and/or -DSMRSH_CMDDIR="dir" to change the default program directory (defaults to ``/usr/adm/sm.bin''). FILES
/usr/adm/sm.bin - default directory for restricted programs on most OSs /var/adm/sm.bin - directory for restricted programs on HP UX and Solaris /usr/libexec/sm.bin - directory for restricted programs on FreeBSD (>= 3.3) and DragonFly BSD SEE ALSO
sendmail(8) $Date: 2004/08/06 03:55:35 $ SMRSH(8)
All times are GMT -4. The time now is 04:38 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy