Package: console-setup Version: 1.225 Severity: graveAfter the upgrade from 1.223, console-setup.service failed to start dueto a syntax error in the setupcon script: ,---- | $ setupcon | /usr/bin/setupcon: 1386: Syntax error: Missing '))' `----It looks like dash does not like the construct in line 907 where thereis an opening '$((' but the closing parentheses are split. ,---- | $ dash << 'EOF' | > echo $((true)) | > echo $((true) ) | > EOF | 0 | dash: 3: Syntax error: Missing '))' | $ `----
I tried dash << 'EOF' [15:28:53] if $( (true) 2>/dev/null); then echo "42" fi EOF 42which only works in dash because of the added space between the command substitution $(...) and the subshell (...).
Does dash think it has to do arithmetic expansion "$((...))"?bash and zsh in sh mode accept nesting a subshell within the command substitution without an extra space. In the last version of the script, backticks were used, circumventing this issue.
But what's POSIX take on this? I couldn't find anything. Is this a bug in dash or in setupcon?
Toto PS: To the proposal of a cleanup: 'checkbashisms' doesn't return any errors, but IMHO, at least closing (double) quotes on a line of their own should be fixed:$ cat /bin/setupcon | grep -n "^\(\"\|'\)$" [15:47:07]
87:' 145:" 148:" 190:" 193:" 208:"