0
market_l="${echo $1 | awk '{print tolower($0)}'}"
echo $market_l

when i execute this its giving me an error below:

./test: market_l="${echo $1 | awk '{print tolower($0)}'}": The specified substitution is not valid for this command.

3 Answers 3

2

Did you mean to use the $() operator instead of ${}?

Sign up to request clarification or add additional context in comments.

1 Comment

i want to convert the $1 argument supplied while executing the script to lowercase and store it in a variable and then echoing it.
2

you should use $() to assign output to a variable. not ${}

market_l="$(echo $1 | awk '{print tolower($0)}')"

or you can do it with ksh

#!/bin/ksh
typeset -l market_l
market_l="$1"
echo $market_l

Other ways to change case besides awk, fyi

$ echo "$1"|tr [A-Z] [a-z]

$ echo "$1"|sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'

2 Comments

don't forget to use quotes: "$1". Always quote unless you specifically don't want to.
actually in the example, its alright not to use quotes since the output of echo is the same. but yes, you are right to always use quotes where necessary.
0

Could be, your system uses ksh88 by default. Run you script putting the next command:

ksh93 ./test

I'm sure, this answer will not help you because has passed 10 years, but it will be useful for someone who falls into the same issue.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.