Shell one-liner

Show how to specify and execute a short program in the language from a command shell, where the input to the command shell is only one line in length.

Task
Shell one-liner
You are encouraged to solve this task according to the task description, using any language you may know.
Task

Avoid depending on the particular shell or operating system used as much as is reasonable; if the language has notable implementations which have different command argument syntax, or the systems those implementations run on have different styles of shells, it would be good to show multiple examples.

11lEdit

Translation of: Nim

The following works on Windows.

...>echo L(i) 0..10 {print("Hello World"[0..i])} > oneliner.11l && 11l oneliner.11l && oneliner.exe
H
He
Hel
Hell
Hello
Hello
Hello W
Hello Wo
Hello Wor
Hello Worl
Hello World

ACL2Edit

$ acl2 <<< '(cw "Hello.")'

AdaEdit

Works with: gnat

under a unixoid shell (bash, sh, ...)

echo 'with Ada.text_IO; use Ada.text_IO; procedure X is begin Put("Hello!"); end X;' > x.adb; gnatmake x; ./x; rm x.adb x.ali x.o x

Note that this mercilessly overwrites and later deletes any files x.adb, x.ali, x,o and x in the current directory.

AikidoEdit

echo 'println ("Hello")' | aikido

AimeEdit

$ src/aime -c 'o_text("Hello, World!\n");'

ALGOL 68Edit

Works with: ALGOL 68G version Any - tested with release mk15-0.8b.fc9.i386 - Interpret straight off
$ a68g -e 'print(("Hello",new line))'

Output:

Hello
Works with: ELLA ALGOL 68 version Any - tested with release 1.8.8d.fc9.i386 - translate to C and then compile and run

For an ELLA ALGOL 68 one-liner, merge these lines of shell code:

code='print(("Hello", new line))'
a=/tmp/algol$$ s=/usr/share/algol68toc;
echo -e "PROGRAM algol$$ CONTEXT VOID\nUSE standard\nBEGIN\n$code\nEND\nFINISH\n" > $a.a68 &&
a68toc -lib $s -dir $s -uname TMP -tmp $a.a68 && rm $a.a68 &&
gcc $s/Afirst.o $a.c  -l{a68s,a68,m,c} -o $a && rm $a.c &&
$a; rm $a

Output:

Hello

AppleScriptEdit

osascript -e 'say "Hello, World!"'

ArturoEdit

You may run any arbitrary code string directly using the -e (or --evaluate) flag:

$ arturo -e:"print {Hello World!}"
Output:
Hello World!

AWKEdit

Maybe the most common way one can use awk is from the command line for one-liners, feeding the interpreter with an input.

$ awk 'BEGIN { print "Hello"; }'

A more "complex" and "real" example:

$ awk '/IN/ { print $2, $4; }' <input.txt

Select field 2 and 4 of lines matching the regular expression /IN/ (i.e. where IN appears)

BASICEdit

The name of the BASIC executable will vary (common ones are basic, bas, and bwbasic), but in general, a short program can be piped to the interpreter like any other language:

echo 'print "foo"'|basic

Note that under Windows (and presumably DOS) the two apostrophes (a.k.a. single quotes) should be omitted, since Windows doesn't remove them from the piped text (and the apostrophe is the comment character in many modern BASICs):

echo print "foo"|basic

Also, some popular interpreters (including Michael Haardt's bas and Chipmunk Basic) will include an extra prompt before exiting unless you include exit or system (depending on the specific interpreter's syntax). This sample output shows both with and without system in bas:

erik@satan:~$ echo 'print "foo"'|bas
bas 2.2
Copyright 1999-2009 Michael Haardt.
This is free software with ABSOLUTELY NO WARRANTY.
> foo
> erik@satan:~$ echo 'print "foo":system'|bas
bas 2.2
Copyright 1999-2009 Michael Haardt.
This is free software with ABSOLUTELY NO WARRANTY.
> foo
erik@satan:~$

Note that this is rather specific to Unix-like systems; most DOS and Windows interpreters are generally unable to handle programs in this manner, unless they were ported from a *nix system in the first place.

ZX Spectrum BasicEdit

On the ZX Spectrum, the ROM basic allows direct commands to be entered from the system prompt:

PRINT "Hello World!"

BaConEdit

BaCon is not an interpreter so we need to compile the code a short explanation echo a command to file a.bac then compile a.bac using bacon then run ./a

echo "PRINT \"Hello World\" " > a.bac && bacon a && ./a

Converting 'a.bac'... done, 2 lines were processed in 0.003 seconds. Compiling 'a.bac'... cc -c a.bac.c cc -o a a.bac.o -lm Done, program 'a' ready. Hello World

BcEdit

$ echo 'print "Hello "; var=99; ++var + 20 + 3' | bc
Output:
Hello 123

BracmatEdit

This example uses the predefined function tay to make a taylor expansion of e^x.

DOS:

bracmat "put$tay$(e^x,x,20)&"

Linux:

bracmat 'put$tay$(e^x,x,10)&'

Output:

  1
+ x
+ 1/2*x^2
+ 1/6*x^3
+ 1/24*x^4
+ 1/120*x^5
+ 1/720*x^6
+ 1/5040*x^7
+ 1/40320*x^8
+ 1/362880*x^9
+ 1/3628800*x^10
+ 1/39916800*x^11
+ 1/479001600*x^12
+ 1/6227020800*x^13
+ 1/87178291200*x^14
+ 1/1307674368000*x^15
+ 1/20922789888000*x^16
+ 1/355687428096000*x^17
+ 1/6402373705728000*x^18
+ 1/121645100408832000*x^19
+ 1/2432902008176640000*x^20

BurlesqueEdit

Burlesque.exe --no-stdin "5 5 .+"

Using the official interpreter.

CEdit

Works with: gcc

The following code leaves the file a.out in the current directory (it does not delete it to avoid to call another shell/system dependent command/program). The current directory is not specified by ./ in every system...

$ echo 'main() {printf("Hello\n");}' | gcc -w -x c -; ./a.out

C#Edit

Note: whilst small, this is more than one line.

Requires PowerShell 2:

> Add-Type -TypeDefinition "public class HelloWorld { public static void SayHi() { System.Console.WriteLine(""Hi!""); } }"
> [HelloWorld]::SayHi()
Hi!

ClojureEdit

Note: whilst small, this is more than one line.

clj-env-dir comes with clojure-contrib.

$ clj-env-dir -e "(defn add2 [x] (inc (inc x))) (add2 40)"
#'user/add2
42

CMakeEdit

This only works with Unix systems that have the device node /dev/stdin.

echo 'message(STATUS "Goodbye, World!")' | cmake -P /dev/stdin

COBOLEdit

Works with GnuCOBOL 2.0 or later

echo 'display "hello".' | cobc -xFj -frelax -

Longer, but avoids two relaxed syntax warnings:

echo 'id division. program-id. hello. procedure division. display "hello".' | cobc -xFj -

Common LispEdit

Varies by implementation

Works with: SBCL
sbcl --noinform --eval '(progn (princ "Hello") (terpri) (quit))'
Works with: CLISP
clisp.exe -q -x "(progn (format t \"Hello from CLISP\") (quit))"

DEdit

Works with: D version 2

requires rdmd

rdmd --eval="writeln(q{Hello World!})"
Hello World!

DcEdit

dc -e '22 7/p'

DelphiEdit

Run in cmd.exe.

echo program Prog;begin writeln('Hi');end. >> "./a.dpt" & dcc32 -Q -CC -W- "./a.dpt" & a.exe

The output has the default Delphi header, before the output of executable ("Hi").

EEdit

rune --src.e 'println("Hello")'

The --src option ends with the the filename extension the provided type of program would have:

rune --src.e-awt 'def f := &lt;swing:makeJFrame>("Hello"); f.show(); f.addWindowListener(def _{to windowClosing(_) {interp.continueAtTop()} match _{}}); interp.blockAtTop()'

ElixirEdit

$ elixir -e "IO.puts 'Hello, World!'"
Hello, World!

Emacs LispEdit

emacs -batch -eval '(princ "Hello World!\n")'

Or another example that does something useful: indent a C source file:

emacs -batch sample.c --eval '(indent-region (point-min) (point-max) nil)' -f save-buffer

ErlangEdit

Erlang always starts other applications that can run in parallel in the background, and as such will not die by itself. To kill erl, we sequentially run the 'halt' function from the 'erlang' module (the -S is there to guarantee 'halt' will be evaluated after the io function).

$ erl -noshell -eval 'io:format("hello~n").' -s erlang halt
hello

F#Edit

> echo printfn "Hello from F#" | fsi --quiet
Hello from F#

FactorEdit

$ factor -run=none -e="USE: io \"hi\" print"

ForthEdit

Works with: GNU Forth
$ gforth -e ".( Hello) cr bye"
Hello

FortranEdit

This example, stolen from the c example is subject to the same caveats. While contrived, FORTRAN as a one liner can easily handle some unique tasks. Let's plot a Bessel function:

$ gawk 'BEGIN{print"write(6,\"(2(g12.3,x))\")(i/10.0,besj1(i/10.0), i=0,1000)\nend";exit(0)}'|gfortran -ffree-form -x f95 - | gnuplot -p -e 'plot "<./a.out" t "Bessel function of 1st kind" w l'

Sorry, I don't know how to upload my jpeg file for the Image tag. Let's use the dumb display instead.

  0.6 +*------------+-------------+------------+-------------+------------++
      +**           +             +     Bessel function of 1st kind ****** +
  0.5 +**                                                                 ++
      |**                                                                  |
  0.4 +**                                                                 ++
      * *                                                                  |
  0.3 *+*   *                                                             ++
      * *  **   *                                                          |
  0.2 *+*  ***  **  **                                                    ++
  0.1 *+*  * *  **  **  ***  **  **   *   **   *                          ++
      * ** * * ***  **  * * ***  **  ***  **  **  ***  **  **  ***  **  ** |
    0 *+ * * * * *  * * * * * *  *** * * * *  *** * * ***  *** * * ***  ***+
      |  * * * * ***  * * * * ***  * * * * ***  *** * * **** *** *** ***  *|
 -0.1 ++ * * * *  **  *** ***  **  **  ***  **  **   **  **  **   **  **  **
      |  *** ***  **  **   **  **   *   *                                  |
 -0.2 ++ **   **  **                                                      ++
      |  **   *                                                            |
 -0.3 ++ **                                                               ++
      +  **         +             +            +             +             +
 -0.4 ++------------+-------------+------------+-------------+------------++
      0             20            40           60            80           100

Free PascalEdit

The FPC (Free Pascal compiler) comes with the utility instantfpc(1) or ifpc(1) for short (Debian or FreeBSD package fpc-utils):

echo "begin writeLn('Hi'); end." | ifpc /dev/stdin

FreeBASICEdit

' FB 1.05.0 Win64

Shell "echo For i As Integer = 1 To 10 : Print i : Next > zzz.bas && fbc zzz.bas && zzz"
Sleep
Output:
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10

FrinkEdit

Frink is distributed as a single .jar file that will run in a Java Virtual Machine. On many operating systems, just double-clicking this .jar file will run Frink with a graphical interface in an interactive mode. By specifying a different main-class (frink.parser.Frink) when starting Frink, it can be run in text-mode interactive mode as well. These options and sample starter scripts for various operating systems are provided in the Running Frink section of the documentation.

The -e command-line option executes a command or commands and prints its value.

$ frink -e "factorFlat[2^67-1]"
Output:
[193707721, 761838257287]

FutureBasicEdit

This is forcing the issue. FB has much more elegant ways of interacting with the Unix Shell.

window 1,,(0,0,160,120):Str255 a:open "Unix",1,"cal 10 2018":do:line input #1,a:print a:until eof(1):close 1:HandleEvents

Output

    October 2018
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

GambasEdit

Click this link to run this code

Public Sub Main()
 
Shell "echo Hello World"

End

Output:

Hello World

GemaEdit

$ gema -p '\B=Hello\n@end'
Hello

GoEdit

echo 'package main;func main(){println("hlowrld")}'>/tmp/h.go;go run /tmp/h.go
Output:
hlowrld

GroovyEdit

Works with: UNIX Shell
$ groovysh -q "println 'Hello'"
Hello
C:\Users\user> groovysh -q "println 'Hello'"
Hello

HaskellEdit

$ ghc -e 'putStrLn "Hello"'
Hello

HuginnEdit

Result of an expression is printed by default:

$ huginn -c '"Hello"'

Output:

"Hello"

Even with an explicit `print` function was used:

$ huginn -c 'print("Hello\n")'

Output:

Hello
none

Unless the last expression ended with a semicolon:

$ huginn -c 'print("Hello\n");'

Output:

Hello

Icon and UniconEdit

These examples work with posix shells.

echo "procedure main();write(\"hello\");end" | icont - -x
echo "procedure main();write(\"hello world\");end" >hello.icn; unicon hello.icn -x

JEdit

$ jconsole -js "exit echo 'Hello'"
Hello

Here, the (empty) result of echo is used as the exit code argument for exit. And, since it's empty, the the default exit code of 0 is what's actually used. The exit command here is used to prevent the default behavior of jconsole (which is to start the J command shell) and to instead return to the OS command shell.

We could have instead used:

$ :|jconsole -js "echo 'Hello'"
Hello

for nearly identical behavior, but this issues J's command prompt before exiting. (But since J's command prompt is three space characters, this would be nearly invisible in many contexts, including here because the mediawiki implementation deletes those trailing spaces when rendering this page into html.)

JavaEdit

Works with: bash

These three lines work with Bourne Shell (or compatible) or C Shell (or compatible), or bash on Unix/Linux/MacOSX/Windows+cygwin

$ echo 'public class X{public static void main(String[]args){' \
>     'System.out.println("Hello Java!");}}' >X.java
$ javac X.java && java X

A user can also enter this as one (very long) line:

$ echo 'public class X{public static void main(String[]args){System.out.println("Hello Java!");}}'>X.java;javac X.java&&java X
Works with: MS-DOS
Compatible Environments (such as cmd.exe)

Works with cmd.exe on Windows (tested on Microsoft Windows XP [Version 5.1.2600])

C:\>echo public class X{public static void main(String[] args){System.out.println("Hello Java!");}}>X.java&&javac X.java&&java X
Hello Java!

JavaScriptEdit

Works with: SpiderMonkey
$ js -e 'print("hello")'
hello

jqEdit

$ jq -M -n 1+1
2

JuliaEdit

$ julia -e 'for x in ARGS; println(x); end' foo bar
foo
bar

KEdit

Works with: Kona
$ k -e "\`0: \"hello\\n\""

KotlinEdit

The following one-liner works with GNOME Terminal on Ubuntu 14.04:

echo 'fun main(args: Array<String>) = println("Hello Kotlin!")' >X.kt;kotlinc X.kt -include-runtime -d X.jar && java -jar X.jar
Output:
Hello Kotlin!

LangEdit

This is an example for the Standard Lang implementation of lang.

$ lang -e "fn.println(Hello World)"

langurEdit

LinuxEdit

$ langur -e 'writeln "Are we reaching Fiji?"'

WindowsEdit

C:\> langur /e 'writeln "Are we reaching Fiji?"'
Output:
Are we reaching Fiji?

LassoEdit

From stdin:

echo " 'The date and time is: ' + date " | lasso9 --

Or alternatively:

$ lasso9 -s " 'The date and time is: ' + date "

Liberty BASICEdit

echo print "hello">oneLiner.bas & liberty -r oneLiner.bas echo print "hello">oneLiner.bas & liberty -r oneLiner.bas

LuaEdit

lua -e 'print "Hello World!"'

MapleEdit

maple -c'print(HELLO);' -cquit

Mathematica/Wolfram LanguageEdit

echo Print[2+2] > file & math.exe -script file

minEdit

min -e:"\"hi from min\" puts!"

NanoqueryEdit

nq -e "println \"Hello Nanoquery!\""

Edit

Commands can be entered into the NetLogo Command Center. NetLogo is white-space delimited. Variables can be defined with the LET command and used in the statement. The CC can be in various modes, such as Turtle mode, where entered commands are ran as if contained in an ASK TURTLES statement.

Observer ModeEdit

let x 15 ask turtles [ set xcor x set x x + 1 ]

Turtle ModeEdit

right random 90 forward 10

NetRexxEdit

Works with: UNIX Shell

Create a temporary file, execute the file via the NetRexx interpreter then delete the temporary file and any files generated via the translation. (i.e. Java class files etc.)

$ TNRX=`mktemp T_XXXXXXXXXXXX` && test ! -e $TNRX.* && (echo 'say "Goodbye, World!"' >$TNRX; nrc -exec $TNRX; rm $TNRX $TNRX.*; unset TNRX)

Output:

NetRexx portable processor, version NetRexx 3.01, build 40-20120823-0156
Copyright (c) RexxLA, 2011,2012.  All rights reserved.
Parts Copyright (c) IBM Corporation, 1995,2008.
Program T_dO7RQs5HPElq
===== Exec: T_dO7RQs5HPElq =====
Goodbye, World!
Processing of 'T_dO7RQs5HPElq' complete

NewLISPEdit

newlisp -e "\"Hello\"
->"Hello"

NimEdit

The following works on any Linux system. With some minor changes, it should work on other systems too.

$ echo 'for i in 0..10: echo "Hello World"[0..i]' >/tmp/oneliner.nim; nim r oneliner
H
He
Hel
Hell
Hello
Hello 
Hello W
Hello Wo
Hello Wor
Hello Worl
Hello World

ObjeckEdit

Works with: UNIX Shell
./obc -run '"Hello"->PrintLine();' -dest hello.obe ; ./obr hello.obe

OCamlEdit

$ ocaml <(echo 'print_endline "Hello"')
Hello
Works with: OCaml version 4.00+
$ echo 'print_endline "Hello"' | ocaml -stdin
Hello

OctaveEdit

$ octave --eval 'printf("Hello World, it is %s!\n",datestr(now));'
Hello World, it is 28-Aug-2013 17:53:47!

OforthEdit

oforth --P"1000 seq map(#sqrt) sum print"
Output:
21097.4558874807

ooRexxEdit

rexx -e "say 'Goodbye, world.'"

OzEdit

This is difficult to do in Oz because the compiler/interpreter always wants the source code in a file and does not read from stdin. We can do somethings like this on Unix-like systems:

echo >tmp.oz "{System.show hello}"; ozc -l System -e tmp.oz
hello

With -l System we make the System module available so that we can print something.

PARI/GPEdit

echo "print(Pi)" | gp -q

PascalEdit

See Free Pascal

PerlEdit

$ perl -e 'print "Hello\n"'
Hello

More information about the many ways of invoking perl can be found in perlrun.

PhixEdit

Command line option -e added for 0.8.1. Outer quotes only rqd if snippet contains spaces, otherwise ignored.
Most one-liners will probably start with '?' since eg "1+2" gives a compilation error.

C:\Program Files (x86)\Phix>p -e ?357+452
809
C:\Program Files (x86)\Phix>p -e "?357+452"
809

PHPEdit

assuming you have the PHP CLI (command-line interface) installed, not just the web server plugin

$ php -r 'echo "Hello\n";'
Hello

PicoLispEdit

$ picolisp -'prinl "Hello world!"' -bye
Hello world!

PikeEdit

$ pike -e 'write("Hello\n");' 
Hello

PowerShellEdit

> powershell -Command "Write-Host 'Hello'"
Hello

ProcessingEdit

The command-line tool processing-java takes a sketch directory (not a file) and so a simple program cannot be piped in from the shell using process substitution. However, a long shell one-liner may write a sketch file to disk, then run it, so long as the folder name and the PDE file name match, e.g. /Tmp/Tmp.pde

In bash:

mkdir -p Tmp; echo "println(\"hello world\");" > Tmp/Tmp.pde; processing-java --sketch="`pwd`/Tmp" --run
Output:
hello world

PrologEdit

Command-Line OptionsEdit

$ swipl -g "writeln('hello world')." -t 'halt.'
hello world
$
$ gprolog --init-goal "write('goodbye'),nl,halt"
goodbye
$
$ yap -q -g "current_prolog_flag(dialect, D), writeln(D), halt"
yap

<<<Edit

$ swipl -q <<< "current_prolog_flag(dialect,D), writeln(D), halt."
swi

$ yap -q <<< "current_prolog_flag(dialect,D), writeln(D), halt."
yap

PipeEdit

$ echo "current_prolog_flag(dialect,D), writeln(D), halt." | swipl -q
swi

$ echo "current_prolog_flag(dialect,D), writeln(D), halt." | yap -q
yap

PureBasicEdit

Runs on Linux with(thanks to) bash. Path variables must be set as decribed in INSTALL.

$ echo 'messagerequester("Greetings","hello")' > "dib.pb" && ./pbcompiler dib.pb -e "dib" && ./dib

PythonEdit

Prints "Hello"Edit

$ python -c 'print "Hello"'
Hello

Web server with CGIEdit

The python CGIHTTPServer module is also an executable library that performs as a web server with CGI. to start enter:

python -m CGIHTTPServer

It returns with:

Serving HTTP on 0.0.0.0 port 8000 ...

QuackeryEdit

$ QUACK=$(mktemp); echo "say 'hello'" > $QUACK; quackery $QUACK; rm $QUACK
hello

Via Python 3Edit

As Quackery is implemented as a Python 3 function, assuming that quackery.py is in the module search path:

$ python3 -c 'import quackery ; quackery.quackery(r""" say '\''hello'\'' cr """)'
hello

REdit

$ echo 'cat("Hello\n")' | R --slave
Hello

Alternatively, using the Rscript front-end,

$ Rscript -e 'cat("Hello\n")'
Hello

RacketEdit

$ racket -e "(displayln \"Hello World\")"
Hello World

RakuEdit

(formerly Perl 6)

Works with: Rakudo version #22 "Thousand Oaks"
$ raku -e 'say "Hello, world!"'
Hello, world!

REBOLEdit

rebview -vswq --do "print {Hello!} quit"

Output:

Hello!

RetroEdit

echo '\'hello s:put nl bye' | retro

REXXEdit

Note:   Regina REXX is the only version of REXX that supports this type of behavior   (taking it's input from a console stream).

        ╔══════════════════════════════════════════════╗
                                                      
          from the MS Window command line  (cmd.exe)  
                                                      
        ╚══════════════════════════════════════════════╝


echo   do j=10  by 20  for 4;   say right('hello',j); end   |   regina

output   when entering the (above) from the (DOS) command line:

     hello
                         hello
                                             hello
                                                                 hello

RingEdit

see "Hello World!" + nl

Output:

Hello World!

RPLEdit

RPL command-line interpreter allows to pass several instructions and values in one line, provided there is no program branch instruction among them. It is nevertheless possible to have a program structure in the line by bracketing it with ≪ ≫, which means "this is an unnamed program". Adding the word EVAL at the end will execute the code, otherwise it would stay at level 1 of the stack.

" World" "Hello" SWAP +
≪ " World" "Hello" SWAP + ≫ EVAL

This less trivial one-liner example calculates S(5), where S(n) is a Machin-like formula :

≪ 0 0 5 FOR k 2 k * 1 + → n ≪ -1 k ^ n / 4 5 n ^ / 239 n ^ INV - * + ≫ NEXT 4 * ≫ EVAL
Output:
3: "Hello world"
2: "Hello world"
1: 3.14159265262

RubyEdit

From Unix:

$ ruby -e 'puts "Hello"'
Hello
Works with: JRuby
$ jruby -e 'puts "Hello from JRuby"'
Hello from JRuby
Works with: Rubinius
$ rbx -e 'puts "Hello from Rubinius"'
Hello from Rubinius

Run BASICEdit

print shell$("echo hello world")

RustEdit

The following code leaves the file rust_out in the current directory (it does not delete it to avoid to call another shell/system dependent command/program). The current directory is not specified by ./ in every system...

$ echo 'fn main(){println!("Hello!")}' | rustc -;./rust_out

S-langEdit

slsh -e 'print("Hello, World")'

Or, in MSW cmd.exe:

slsh -e "print(\"Hello, World\")"

Note that print() is included w/slsh, but is not part of S-Lang itself.

ScalaEdit

Library: Scala
C:\>scala -e "println(\"Hello\")"
Hello
PS C:\> scala -e 'println(\"Hello\")'
Hello

The escaping of quotes is required by Windows. On Unix and shown in the example on Windows PowerShell, one could just use single quotes around the code.

SchemeEdit

Works with: Guile
guile -c '(display "Hello, world!\n")'

sedEdit

The first non-option argument is interpreted as the script.

$ sed q /proc/meminfo

Alternatively, scripts can be passed via the -e option.

$ sed -e 's/[[:space:]]*$//' -e '/./!d' file.txt

ShinyEdit

shiny -e "say 'hi'"

SidefEdit

% sidef -E "say 'hello'"

SlateEdit

./slate --eval "[inform: 'hello'] ensure: [exit: 0].".

SNOBOL4Edit

Portable version

echo 'a output = "Hello, World!";end' | snobol4 -b

Bash version

snobol4 -b <<<'a output = "Hello, World!";end'

TclEdit

This is an area where Tcl is lacking, though when shell one-liners are required a construct like this is typically used:

$ echo 'puts Hello' | tclsh
Hello

TXREdit

$ echo 123-456-7890 | txr -c '@a-@b-@c' -
a="123"
b="456"
c="7890"

Most useful txr queries consist of multiple lines, and the line structure is important. Multi-liners can be passed via -c easily, but there is no provision in the syntax that would allow multi-liners to be actually written as one physical line. There are opposite provisions for splitting long logical lines into multiple physical lines.

The -e (evaluate) and -p (evaluate and print) options provide shell one-liner access to TXR Lisp:

$ txr -p '(+ 2 2)'
4
$ txr -e '(mkdir "foo" #o777)'
$ ls -ld foo
drwxrwxr-x 2 kaz kaz 4096 Mar  4 23:36 foo

UNIX ShellEdit

Explicit call of the shell, passing the shell command via the -c option:

$ sh -c ls
$ sh -c "echo hello"

To invoke a specific shell like Bash, Korn Shell or Z Shell:

$ bash -c 'paste <(echo 1) <(echo 2)'
$ ksh -c 'let i=3+4; print $i'
$ zsh -c 'if [[ 5 -lt 6 ]] { echo ok };'

Shell scripts almost never use sh -c, because there are various implicit ways whereby the shell command language evaluates a command in a subshell:

$ VAR=`echo hello`   # obsolescent backtick notation
$ VAR=$(echo hello)  # modern POSIX notation
$ (echo hello)       # execute in another shell process, not in this one

There are more details about `echo hello` and $(echo hello) at Execute a system command#UNIX Shell.

C ShellEdit

Run a C shell command from any shell:

$ csh -fc 'if (5 < 6) echo ok'

esEdit

Run a command, in extensible shell, from any shell:

$ es -c 'if {test 5 -lt 6} {echo ok}'

UrsalaEdit

The command to execute the Ursala compiler is fun. An expression supplied as a parameter to the --main option is compiled and evaluated. If the expression evaluates to a list of character strings, it can be displayed on standard output with --show. If it's some other type, it can be formatted for display by --cast <type expression>,

$ fun --main=-[hello]- --show
hello
$ fun --main="power/2 32" --cast %n
4294967296
$ fun --m="..mp2str mpfr..pi 120" --c %s
'3.1415926535897932384626433832795028847E+00'

Vedit macro languageEdit

The following DOS command starts Vedit and displays a message. When the user presses any key, Vedit exits.

vpw -c'Get_Key("Hello!") exit'

WartEdit

echo "prn 34" |wart

WrenEdit

echo 'System.print("Hello from Wren!")' > tmp.wren; wren tmp.wren
Output:
Hello from Wren!

zklEdit

With a unix like shell, just pipe the program into the REPL. Kinda greasy and noisy. To shut it up, send stdout to /dev/null

echo 'println("Hello World ",5+6)' | zkl
Output:
zkl 1.12.9, released 2014-05-01
Hello World 11
Hello World 11