Continue an SFK script at a different point, or stop the script due to a condition with sfk if.
sfk ... +if [opts] expression command1 ... +command2sfk ... +if ... [+]begin ... +elseif ... +else ... +endif
execute command1 if expression is true, then continue to command2.
if expression is not true, skip directly to command2.
can be used only in a command chain, after another command.
use "+if expr +begin ... +endif" to run multiple commands
as one block, if expression is true.
supported expressionsreturn code comparison
"rc=n" return code of previous command equal to n
"rc>n" return code of previous command higher than n
"rc<n" return code of previous command lower than n
"rc<>n" return code of previous comm. not equal to n
generic text or number comparison
"l = r" left part is equal to right
"l <> r" left part is not equal to right
"l < r" left part is lower then right
"l > r" left part is higher then right
"l <= r" left part is lower or equal
"l >= r" left part is higher or equal
if both l and r contain only digits a numeric
comparison is done, else a text comparison.
logic values (since sfk 1.9.8.2)
"1" true, execute command or block
"0" false, skip command or block
options
options for if must be given before expression.
-var use sfk variables, must be first option
-text force text comparison (nocase)
-case case sensitive text comparison
-debug tell what is done in a generic comparison
limited nestingif ... begin ... endif
- may not contain other if[exist] / begin / endif
- but may contain short if ... without begin.
invalid nesting is not detected, and causes an undefined
program flow. you may add global option -strictif to (try)
to detect wrong if statements better.
do not forget 'begin' when using complex statements!sfk if ... begin ... +elseif ... +else ... +endif
strictly requires the 'begin', otherwise it may do
nothing, without any notice.
no chaining data support since sfk 1.9.3+if does not accept any chain input data, as this
creates ambiguities with many following
commands, like +if ... +setvar a=text
see alsosfk ifexist check if a file or folder exists.
sfk call call sub functions in a script.
sfk goto jump to a local label.
examplessfk filter in.txt -+err +if "rc>0" run -yes "x.bat" +echo done
if file in.txt contains the word "err", run x.bat.
the "echo done" is always executed.
sfk xex -justrc in.txt "/foo*bar/"+if "rc=0" stop 9 "[Red]error:[def] miss" +echo "match"
type this all in one line, or use "sfk cmd 18". [18]
if file in.txt does not contain the search pattern
then stop with return code 9, printing an error.
sfk -var echo "foo and bar" +setvar a+if "#(contains(a,'bar'))" tell "found bar" +tell "done"
prints "found bar" and then "done", because the
'contains' returns '1', causing command execution.
sfk if 0 begin tell one +else tell two +endif +tell three
prints 'two' and 'three'.