Timeline for Why are my strings being truncated including and after an equals sign?
Current License: CC BY-SA 4.0
9 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
May 13 at 13:55 | comment | added | Mark |
To address the various comments: @KamilMaciorowski @ikkachu This is the output from printf / set -x : sqlcmd -S localhost -U sa -P password -v PrintMe=abc== -i test.sql . Clearly the quotes are removed but I'm not sure what the right combination of quotes is supposed to be. I've tried several variations. If we think it's a sqlcmd parsing problem, I can try raising an issue in that repo as I already searched and saw nothing about this. @Kusalananda, I suspect this issues lives in the shell / sqlcmd layer since my example using :setvar works fine.
|
|
May 13 at 7:31 | history | edited | Stéphane Chazelas | CC BY-SA 4.0 |
Make it clear that we're talking about some Microsoft specific utility access a Microsoft SQL server implementation using some Microsoft-specific SQL language as that's likely relevant.
|
May 13 at 7:22 | comment | added | ilkkachu |
that zsh = expansion is a fine guess, but it should only make a difference if the equals sign is at the start of a word. Like echo =foo gives an error. echo foo=bar= as here should be fine. (the linked Q&A says that too in the quote from the manual.) And, if it hits the expansion in some random case, you'll get a path like /usr/local/bin/foo , or an error if that command isn't found.
|
|
May 13 at 6:59 | comment | added | ilkkachu |
Alternatively to printf , enable set -x and run the program normally. The shell will print what it actually executed.
|
|
May 13 at 6:17 | history | edited | Kusalananda♦ |
edited tags
|
|
May 13 at 3:45 | comment | added | Kusalananda♦ |
This likely has nothing to do with the shell but rather with how the database engine treats values containing equal signs. Try using ^ to escape the equal signs, or use embedded single quotes to quote the value of the SQL variable. Unfortunately, I don't have access to this particular database engine locally.
|
|
May 13 at 2:05 | comment | added | Kamil Maciorowski |
Try printf '%s\n' -S localhost -U sa -P password -v PrintMe='abc==' -i test.sql and see if your shell passes the == as == (I bet it does). Note PrintMe='abc==' after quote removal is PrintMe=abc== . I would rather suspect some quirk (bug?) in parsing this by sqlcmd . AFAIK it is supposed to support -v var1=v,var2=v2 , so parsing the option-argument is not as trivial as detecting the first = only.
|
|
S May 13 at 1:13 | review | First questions | |||
May 13 at 9:38 | |||||
S May 13 at 1:13 | history | asked | Mark | CC BY-SA 4.0 |