{{fbdoc item="title" value="SHELL"}}----
Sends a command to the system command interpreter

{{fbdoc item="syntax"}}##
	[[KeyPgDeclare|declare]] [[KeyPgFunction|function]] **Shell** ( [[KeyPgByref|byref]] //command// [[KeyPgAs|as]] [[KeyPgConstQualifier|const]] [[KeyPgString|string]] ) [[KeyPgAs|as]] [[KeyPgLong|long]]
##
{{fbdoc item="usage"}}##
	//result// = **Shell**( //command// )
##
{{fbdoc item="param"}}
	##//command//##
		A string specifying the command to send to the command interpreter.

{{fbdoc item="ret"}}
	If the command could not be executed, ##-1## is returned. Otherwise, the command is executed and its exit code is returned.

{{fbdoc item="desc"}}
	Program execution will be suspended until the command interpreter exits.

{{fbdoc item="ex"}}
{{fbdoc item="filename" value="examples/manual/system/shell.bas"}}%%(freebasic)
'e.g. for windows:
shell "dir c:*.*"

'e.g. for linux:
shell "ls"
%%

{{fbdoc item="target"}}
	- Linux requires the //command// case matches the real name of the command. Windows and DOS are case insensitive. The program being shelled may be case sensitive for its command line parameters. 
	- Path separators in Linux are forward slashes / . Windows uses backward slashes \ but it allows for forward slashes.  DOS uses backward  \ slashes.
	- If an empty //command// string is passed, DOS will open an interactive command prompt.  On Windows, an error may be returned.


{{fbdoc item="diff"}}
	- QB allowed SHELL on its own without a "command" argument which caused a default command shell to be started.  Execution in the main program would suspend until exit from the command shell.  The behaviour in FB is platform-dependent.

{{fbdoc item="see"}}
	- ##[[KeyPgExec|Exec]]##
	- ##[[KeyPgRun|Run]]##

{{fbdoc item="back" value="CatPgOpsys|Operating System Functions"}}