Syntax error: word unexpected (expecting ")")


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Syntax error: word unexpected (expecting ")")
# 1  
Old 03-05-2009
Syntax error: word unexpected (expecting ")")

I have a very simple script that reads in the contents of a file (_open.txt) into an array "lyrics":
Code:
#!/bin/sh

# read in the text
lyrics=( `cat _open.txt` | tr '\n' ' ')

exit 0

It gives the following error message:
./lyrics.sh: 1: Syntax error: word unexpected (expecting ")")

I have also tried
Code:
lyrics=($(cat _open.txt))

as well as with and without quotes (single and double) around the filename.
but it yields the same error message. The path /bin/sh is correct. What is the error message really saying?
# 2  
Old 03-05-2009
try this
Code:
#bash:
declare -a lyrics=$( <  _open.txt )
#ksh
set -A lyrics=$( <  _open.txt )

If you are using bash or ksh this will work. ksh limits the number of elements in an array to 1023. So _open.txt has to have less than 1024 "words" in it.
# 3  
Old 03-05-2009

What shell is in /bin/sh?

Most shells do not have arrays, so you may have to change the shebang to one that does, perhaps "#!/bin/bash".
# 4  
Old 03-05-2009
Thank you for your prompt response. What is the cause of the syntax error? By the way, the file contains a large word, ie a body of text without spaces, so is there a limit to what the array lyrics can hold in terms of maximum size of array element?
# 5  
Old 03-05-2009
For bash there is no defined limit.
Code:
a=$( < war_and_peace.txt)

You could put a whole book into a bash variable or an array. You are limited by virtual memory on your machine.

ksh also allows variable to be really large as well, but limits the number of elements in an array.
# 6  
Old 03-05-2009
Quote:
Originally Posted by jim mcnamara
try this
Code:
#bash:
declare -a lyrics=$( <  _open.txt )
#ksh
set -A lyrics=$( <  _open.txt )


Neither declaration is necessary. In either bash or ksh93, simply assigning it is enough:

Code:
lyrics=( $( tr '\n' ' ' <  _open.txt ) )

Note that you do not need tr; the shell will split the array on the characters in $IFS, which normally includes a space. So this is the same as the above:

Code:
lyrics=( $( <  _open.txt ) )

Quote:
If you are using bash or ksh this will work. ksh limits the number of elements in an array to 1023. So _open.txt has to have less than 1024 "words" in it.

Ksh88 was limited to 1023 elements, but I don't think it accepted that syntax for assigning a number of elements to an array.

Ksh used to be limited to 4096 elements in an array, but versions for the last few years have, like bash, been limited only by available memory.
# 7  
Old 03-05-2009
Chris -

With regard to arrays -

I disagree. Simply because you can NOT do something and have it work doesn't necessarily mean it is a great idea. There is a concept: self-documenting code.

Yes, syntactically, you are correct. In terms of good practice you are not. IMO.
You obviously do not buy this idea, so it's okay. Perderabo & I have gone around on this as well.

My point: In real world shops, especially now, people come & go & get outsourced.
Harder to read code is harder to maintain. Period. See 'Code Complete' by Steve McConnell 2nd Ed. Small changes to improve readability matter in the long run because 95% of the cost of software is in maintenance....

Unless this is a massive system operation running in an environment where you need to limit process resource usage as much as possible, code obfuscation in an attempt to gain performance is not de facto a good idea always. Not that this example makes much difference performance wise. Just coding for the 'next guy'.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Unexpected "(" (expecting "}")

Hi all, I run the script runvdr from the package runvdr-extreme for many years without any problem (I'm not allowed to post links, but it should be easy to find). Now I tried to run it from within LibreElec which gives me the following error unexpected "(" (expecting "}"). The corresponding line... (12 Replies)
Discussion started by: ACorner
12 Replies

2. Shell Programming and Scripting

Error: "Syntax error; unexpected end of file"

Hello all, I am running a script to generate a report and mail it to an email address. When I am trying to validate whether the file is a 0 kb file, I am getting the below error. Error: "Syntax error; unexpected end of file" Any suggestions please? Code: #!/bin/sh .... (1 Reply)
Discussion started by: Pradeep_Raj
1 Replies

3. BSD

Keep getting error "-bash: ./.profile_z2: line 52: syntax error: unexpected end of file"

#!/bin/bash #-------------------------------------------------------- # Setup prompt # Author Zeeshan Mirza # Data: 06-08-2017 #-------------------------------------------------------- if then . ./.profile_custom_pre fi umask 022 set -o vi export EDITOR=vi export VISUAL=vi... (3 Replies)
Discussion started by: getzeeshan
3 Replies

4. Shell Programming and Scripting

Error"syntax error at line 15: `end of file' unexpected"

While i m running below code, it is giving me the error"syntax error at line 15: `end of file' unexpected". Pls let me know what is wrong here..i tried many ways, but no luck dbSID="SWQE" usrname="apps" password="Wrgthrk3" count=0 while do sqlplus $usrname/$password@$dbSID... (5 Replies)
Discussion started by: millan
5 Replies

5. Shell Programming and Scripting

Help with FTP Script which is causing "syntax error: unexpected end of file" Error

Hi All, Please hav a look at the below peice of script and let me know if there are any syntax errors. i found that the below peice of Script is causing issue. when i use SFTP its working fine, but there is a demand to use FTP only. please find below code and explain if anything is wrong... (1 Reply)
Discussion started by: mahi_mayu069
1 Replies

6. Shell Programming and Scripting

Help with error "syntax error: unexpected end of file"

Hi Techies, can anyone please debug the following Script and let me know what is going wrong here. im getting the following error #!/usr/bin/bash # ############################################################################################## # # Variables # #... (2 Replies)
Discussion started by: mahi_mayu069
2 Replies

7. Shell Programming and Scripting

Syntax error near unexpected token `"Hit <ENTER> to continue:"'

the below code will search attr string inside makefile under the modelno on given path. echo "Enter model no for searching string inside makefile" read inputs2 #find /pools/home_unix/sapte/work/models/model/$inputs2 -name "makefile" | xargs grep "attr" \; #;;I am getting below error.... (7 Replies)
Discussion started by: lathigara
7 Replies

8. Shell Programming and Scripting

Bash (Ubuntu server): Syntax error: "|" unexpected in While-loop

Hello forum, I hope my problem is easy to solve for someone in here! My main task is to copy a large amount of imap-accounts from one server to another. There is a tool (Perl) called imapsync which does the job exellent. Unfortunately I'm only able to run it on one account at a time. After... (3 Replies)
Discussion started by: primaxx
3 Replies

9. Solaris

"syntax error near unexpected token `fi' "

one of my script as follows HOME=/apps/logs mv $HOME/cron.log $HOME/cron.log.`date +%Y-%m-%d` touch $HOME/cron.log fi i am getting error as follows on the last line we are getting ... "syntax error near unexpected token `fi' " please suggest.... (4 Replies)
Discussion started by: GIC1986
4 Replies

10. Shell Programming and Scripting

"syntax error at line 21 :'done' unexpected." error message"

I am trying to run the script bellow but its given me "syntax error at line 20 :'done' unexpected." error message" can someone check to see if the script is ok? and correct me pls. Today is my first day with scripting. Gurus should pls help out #!/bin/ksh # Purpose: Check to see if file... (3 Replies)
Discussion started by: ibroxy
3 Replies
Login or Register to Ask a Question