Unexpected "(" (expecting "}")


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Unexpected "(" (expecting "}")
# 8  
Old 02-14-2019
busybox bash is not bash, not even if it calls itself that. That's just a convenience alias to a more limited shell.

Install bash.
# 9  
Old 02-14-2019
Quote:
Are you getting the same error on line 46 of this script?
Code:
LibreELEC:~ # /bin/bash /storage/.config/test
/storage/.config/test: line 46: syntax error: unexpected "(" (expecting "}")

Quote:
And sh doesn't have arrays
That's what I wrote in my second post.

Quote:
Does your busybox version really offer bash?
I only said that bash is installed
but after I read Corona's comment

Quote:
That's just a convenience alias
I doublechecked and bash --version really results in an empty line.
So is it true that busybox offers a fake bash command? That's irritating (as well as the error message)

LibreElexc is compiled from scratch, where the contend is controlled by package descriptions. There definitely is a package for bash 4.3.46 but obviously it wasn't compiled and installed. I'll have to look into this.

So if this
Code:
Currently defined functions:
        ar, arch, arp, arping, ash, awk, basename, bash

is just a limited bash version and there is no way to change the code of the script because busybox offers no arrays then this problem should be "solved". Learning never stops.
I thank you all for your efforts and useful contributions.
# 10  
Old 02-14-2019
Quote:
Originally Posted by ACorner
So is it true that busybox offers a fake bash command? That's irritating (as well as the error message)
It's kind of a "boy who cried wolf" situation. bash and sh are so synonymous in the linux world, it's difficult to convince authors to type #!/bin/sh whenever #!/bin/bash wasn't needed. On many systems, they're the exact same thing anyway, they have no "minimal" shell to even test with.

But in a system with 2 megs of storage and 4 megs of RAM, bash is a "hog". Many hundreds of kilobytes could be saved by using a more minimal shell. So they install busybox, plus the link to make these "bash" scripts run on vanilla sh, which is usually enough to work, sometimes with a minor modification or two.

Of course, on the rare occasion these "bash" scripts actually need bash, you get this.
# 11  
Old 02-15-2019
I fully understand why busybox is used on systems like JustEnoughOSes, after all that's the reason why I use LibreElec.
But it would be very helpfull if at least error messages would give a tiny hint that it's busybox that produces that error and not bash. It's not obvious that if you type an explicit command like /bin/bash that you end up in a "fake" version.
But that' another story.
# 12  
Old 02-15-2019
Quote:
Originally Posted by ACorner
I fully understand why busybox is used on systems like JustEnoughOSes, after all that's the reason why I use LibreElec.
But it would be very helpfull if at least error messages would give a tiny hint that it's busybox that produces that error and not bash. It's not obvious that if you type an explicit command like /bin/bash that you end up in a "fake" version.
But that' another story.
I fully agree with you there. Note that if you were using a real bash, any diagnostic messages that it produces would include "bash:" at the start of the message. For example if I issue the command:
Code:
bash -c 'for i in *;do { cat "$i'

on macOS, I get two diagnostics:
Code:
bash: -c: line 0: unexpected EOF while looking for matching `"'
bash: -c: line 1: syntax error: unexpected end of file

each of which clearly indicates that the diagnostic came from bash (the first indicating that it is looking for a missing <double-quote> character and the second indicating that it is looking for a missing } and/or a missing done). This is why we asked you to be sure that you were showing us the exact, complete diagnostic messages you were getting when you reported the problem.

If the tools provided by busybox don't do that for you, you'll have a hard time trying to guess if the diagnostics you're seeing are coming from the shell or from one of the utilities invoked by the shell. This makes diagnosing problems in an environment like that much more difficult for you. I wish you luck.
# 13  
Old 02-15-2019
Quote:
I wish you luck.
Thanks.
I will need it ;)
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

8. Shell Programming and Scripting

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": #!/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... (9 Replies)
Discussion started by: figaro
9 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question