WAD Output redirection to IF block fails with "unbalanced brackets"

Aug 23, 2010
635
9
TCC-RT 22.00.40 x64 Windows 7 [Version 6.1.7601]
STC:
Code:
@ECHO OFF
ECHO "Test line" | IF "%1" == "-d" (
  FIND /I "line"
) ELSE (
  ECHO "Fail!"
)
CMD runs as expected, TCC breaks with "5/6: Unbalanced parentheses ("/"6: Unknown command )".
 
Aug 23, 2010
635
9
To clarify, CMD creates a subshell with (), much like POSIX shell do.
Constructions like
Code:
(
  echo 1
  echo 2
  echo 3
) > file.ext
Are equally valid in CMD and POSIX.
 

rconn

Administrator
Staff member
May 14, 2008
12,316
148
TCC-RT 22.00.40 x64 Windows 7 [Version 6.1.7601]
STC:
Code:
@ECHO OFF
ECHO "Test line" | IF "%1" == "-d" (
  FIND /I "line"
) ELSE (
  ECHO "Fail!"
)

CMD runs as expected, TCC breaks with "5/6: Unbalanced parentheses ("/"6: Unknown command )".

Your syntax is a bit off. TCC's parser is smarter than CMD's, and is trying to associate the command group with the appropriate shell. (CMD just appends everything on the line, which is bad if you're doing another embedded pipe.)

The correct syntax (which works as expected in both TCC and CMD) is to group the entire pipe process:

Code:
@ECHO OFF
ECHO "Test line" | ( IF "%1" == "-d" (
    FIND /I "line"
  ) ELSE (
    ECHO "Fail!"
  )
)
 
Aug 23, 2010
635
9
If it would have been smarter, it'd recognize entire IF as a block operator without "wrapping it into a single line, like CMD does".
That would've been smart.
 
Similar threads
Thread starter Title Forum Replies Date
J WAD Output redirection in tcexit looses data Support 31
Charles Dye Strange output, here-doc redirection, TYPE, //UnicodeOutput=Yes Support 6
Daniel Wee Rexx output redirection seems to be broken Support 4
A How to? TEE - duplicate output to STDERR Support 3
FreezerBurnt ANSI Prompt messes up list output. Support 39
Ó Recent git output not shown on TCC Support 1
Peter Murschall TEE cannot handle Unicode output Support 2
C TEE command appending null characters to output Support 6
Jesse Heines webform output different in ver. 26 than ver. 25 Support 2
vefatica Piping the output of a DO loop. Support 4
vefatica TCMD output invisible on Win10 Support 22
B How can TCC make an output as a part of command string Support 2
Enigma Take Command 23 duplicates output Support 0
Joe Caverly Works with CMD.EXE, no output with TCC.EXE Support 7
S Output from debugger Support 4
M TCC incorrect dir output since Windows 1803 Support 6
P Scrollable colored output Support 3
scottb How to? ipconfig output in current window Support 4
David McClelland TEE command puts it's output file in c:\ Support 4
vefatica How to? TPIPE ... see output right away? Support 4
T Fixed Unnecessary debug output Support 3
JohnQSmith Weird DIR output (missing lines) Support 1
vefatica Console output slower that before Support 8
Mordachai How to capture all console output from a TCMD session? Support 4
C Output continues after Ctrl-Break Support 8
Steve Pitts WAD Strange output from DEL of a non-existent directory Support 7
I perl output is not visible Support 4
I v16 - cls corrupts output stream Support 7
D Fixed Minor problem: output not alligned in the tree command Support 1
vefatica WAD IDE, output window to foreground Support 3
R WAD Strange output from "memory" command Support 1
A How to? Set up a log file for all command output Support 3
A How to? Use TEE with .NET output Support 6
T How to? Logging Output from External Programs Support 4
Frank output of @ipaddress/@ipname Support 1
dcantor Unidentifiable output Support 16
Stefano Piccardi forum software writes debugging output Support 5
Stefano Piccardi TCC 13 vs. TCC 14 different FFIND /E"d$" output Support 1
H TPIPE: /FILTER and /OUTPUT unexpected incompatibility Support 6
Stefano Piccardi issue: redirecting GOSUB output Support 11
A How to? Pass output from ffind to another command in a BTM file Support 5
J Can you redirect output to printer device with echo? Support 1
A How to? How to enable UTF-8 output in tcmd.ini Support 9
W Ascii character output Support 12
S SELECT DEL (*D.DLL) - output curious Support 8
T eval[] crashes with negative binary output Support 1
E Redirect output from "start"-ed console Support 5
E Scrolling output to single, non-scrolling line Support 13
A Redirecting TCC output to a different RDP Session Support 6
D Start program without waiting and redirect output Support 6

Similar threads