Replace string works on command-line but fails when run from shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace string works on command-line but fails when run from shell script
# 8  
Old 09-04-2019
The echo command is not portable.
Use printf "%s\n" instead.
Code:
cat check.sh
str=`printf "%s\n" "$1" | sed -e 's#\\\\n# #g'`
printf "%s\n" "$str"
str=$(printf "%s\n" "$1" | sed -e 's#\\\\n# #g')
printf "%s\n" "$str"

Now ksh and bash should have the same behavior.
This User Gave Thanks to MadeInGermany For This Post:
# 9  
Old 09-04-2019
This uses '/usr/bin/printf' which is fully POSIX compliant.
Just use your 'printf':
Code:
#!/usr/local/bin/dash
# check.sh
# Use /usr/bin/printf as that is fully POSIX compliant.
# OSX 10.14.3...
# $1 is '/fin/app/01/scripts\\n/fin/app/01/sql'

text=$( /usr/bin/printf "%b" $( /usr/bin/printf "%b" $1 ) )
text=$( /usr/bin/printf "%b " ${text} )

# Without trailing newline:
# /usr/bin/printf "%s" "${text%?}" > /tmp/check.row

# With trailing newline:
/usr/bin/printf "%s\n" "${text%?}" > /tmp/check.row

# Check results...
echo ""
cat /tmp/check.row
echo ""
hexdump -C /tmp/check.row
echo ""

Results using the same machine as before.
Code:
Last login: Wed Sep  4 10:27:46 on ttys000
AMIGA:amiga~> cd Desktop/code/Shell
AMIGA:amiga~/Desktop/code/Shell> ./check.sh '/fin/app/01/scripts\\n/fin/app/01/sql'

/fin/app/01/scripts /fin/app/01/sql

00000000  2f 66 69 6e 2f 61 70 70  2f 30 31 2f 73 63 72 69  |/fin/app/01/scri|
00000010  70 74 73 20 2f 66 69 6e  2f 61 70 70 2f 30 31 2f  |pts /fin/app/01/|
00000020  73 71 6c 0a                                       |sql.|
00000024

AMIGA:amiga~/Desktop/code/Shell> _


Last edited by wisecracker; 09-04-2019 at 07:34 AM..
This User Gave Thanks to wisecracker For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find command works on Linux but fails on Solaris.

Hi, I am looking for a generic find command that works on both Linux and Solaris. I have the below command that works fine on Linux but fails on solaris.find /web/config -type f '(' -name '*.txt' -or -name '*.xml' -name '*.pro' ')' Fails on SunOS mysolaris 5.10 Generic_150400-61 sun4v sparc... (1 Reply)
Discussion started by: mohtashims
1 Replies

2. Shell Programming and Scripting

Works on command line but not in script

OSX 10.9 I am building a script that evaluates the difference between 2 files. Here is a command that does not work transparently. Running this command in Terminal yields great results; however when I put that line in a .sh script, I get the errors shown below. Am I doing something silly? ... (1 Reply)
Discussion started by: sudo
1 Replies

3. Shell Programming and Scripting

Why my git command has no output in crontab but works well run this script manually?

cat /home/lyang001/update.sh #!/bin/sh #shopt -s expand_aliases HOME_DIR=/home/lyang001/updates UPDATE_MAIL=${HOME_DIR}/updates.mail rm $UPDATE_MAIL -rf cd $HOME_DIR/wr-kernel git log --no-merges --since="20 day ago" --name-status --pretty=format:"%an %h %s %cd" origin/WRLINUX_5_0_1_HEAD >>... (2 Replies)
Discussion started by: yanglei_fage
2 Replies

4. Shell Programming and Scripting

SH script, variable built command fails, but works at command line

I am working with a sh script on a solaris 9 zone (sol 10 host) that grabs information to build the configuration command line. the variables Build64, SSLopt, CONFIGopt, and CC are populated in the script. the script includes CC=`which gcc` CONFIGopt=' --prefix=/ --exec-prefix=/usr... (8 Replies)
Discussion started by: oly_r
8 Replies

5. UNIX for Dummies Questions & Answers

Works on command line but not in script; vncserver on solaris 10

Hi guys. My first post, so be gentle... On my Solaris 10 machine vnc server is running. I need a command to extract most recent client session number (screen). So with: Code: bash-3.2# ps -ef | grep vnc | grep Xaut root 19805 19797 0 15:41:44 ? 0:01 Xvnc :4 -inetd -once... (5 Replies)
Discussion started by: cp6uja
5 Replies

6. UNIX for Dummies Questions & Answers

Works on command line but not in script

Hey guys. Hopefully this is an easy one but having reference similar problems on the web I still can't fix it. I am doing a recursive find and replace from a script. Of course I could just run the damn thing from the command line but it's bugging me now and want to get it working. grep -rl... (4 Replies)
Discussion started by: anthonyjstewart
4 Replies

7. Shell Programming and Scripting

Need help! command working ok when executed in command line, but fails when run inside a script!

Hi everyone, when executing this command in unix: echo "WM7 Fatal Alerts:", $(cat query1.txt) > a.csvIt works fine, but running this command in a shell script gives an error saying that there's a syntax error. here is content of my script: tdbsrvr$ vi hc.sh "hc.sh" 22 lines, 509... (4 Replies)
Discussion started by: 4dirk1
4 Replies

8. Shell Programming and Scripting

Zgrep works at command line but not in script?

Hi all- I'm trying to search through some .gz log files to verify certain feeds have passed through our app. I have a small script that I wrote in hopes that I could automate the checking but haven't been able to get the zgrep to work. When I copy it to the command line directly it works... (2 Replies)
Discussion started by: Cailet
2 Replies

9. Shell Programming and Scripting

Cron job fails, but works fine from command line

I have a very basic script that essentially sends a log file, via FTP, to a backup server. My cron entry to run this every night is: 55 23 * * * /usr/bin/archive_logs The script runs perfectly when executed manually, and actually worked via cron for about three weeks. However, it mysteriously... (3 Replies)
Discussion started by: cdunavent
3 Replies

10. UNIX for Dummies Questions & Answers

script works on command line, not in cron job

Hey there, I'm a total newbie unix guy here and just picking this stuff up. Have a very small script I put together that works fine from the command line but not once I put it in a cron job. Searched and found this thread and am wondering it it has something to do with setting variables, though the... (7 Replies)
Discussion started by: JackTheTripper
7 Replies
Login or Register to Ask a Question