1<!DOCTYPE html> 2<html lang="en-US"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width,initial-scale=1"> 6 <title>The ABS programming language</title> 7 <meta name="generator" content="VuePress 1.9.10"> 8 <link rel="preconnect" href="https://fonts.gstatic.com"> 9 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;500&display=swap"> 10 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@300;400;500;700;900&display=swap"> 11 <meta name="description" content="Home of the ABS programming language: the joy of shell scripting."> 12 <meta name="theme-color" content="#ec5975"> 13 <meta name="apple-mobile-web-app-capable" content="yes"> 14 <meta name="apple-mobile-web-app-status-bar-style" content="black"> 15 16 <link rel="preload" href="/assets/css/0.styles.2f039b9c.css" as="style"><link rel="preload" href="/assets/js/app.2cf85281.js" as="script"><link rel="preload" href="/assets/js/2.9eadad48.js" as="script"><link rel="preload" href="/assets/js/1.f429aa72.js" as="script"><link rel="preload" href="/assets/js/55.58a5e4f2.js" as="script"><link rel="prefetch" href="/assets/js/100.0e30a071.js"><link rel="prefetch" href="/assets/js/101.8f926f45.js"><link rel="prefetch" href="/assets/js/102.02ae503e.js"><link rel="prefetch" href="/assets/js/103.d7983ba2.js"><link rel="prefetch" href="/assets/js/104.68ac2db6.js"><link rel="prefetch" href="/assets/js/105.e0c6d089.js"><link rel="prefetch" href="/assets/js/106.b740d2c7.js"><link rel="prefetch" href="/assets/js/107.0cd7a9f3.js"><link rel="prefetch" href="/assets/js/108.56f07389.js">
16<link rel="prefetch" href="/assets/js/109.1a4a8a3d.js"><link rel="prefetch" href="/assets/js/110.0d510989.js"><link rel="prefetch" href="/assets/js/111.d2cf7a64.js"><link rel="prefetch" href="/assets/js/112.7106f736.js"><link rel="prefetch" href="/assets/js/113.b6532d52.js"><link rel="prefetch" href="/assets/js/114.d8fafaef.js"><link rel="prefetch" href="/assets/js/115.7b8114c9.js"><link rel="prefetch" href="/assets/js/116.7b22a1c0.js"><link rel="prefetch" href="/assets/js/117.1c7239e1.js"><link rel="prefetch" href="/assets/js/118.21336e7b.js"><link rel="prefetch" href="/assets/js/119.6c30a720.js"><link rel="prefetch" href="/assets/js/12.5188bbc0.js"><link rel="prefetch" href="/assets/js/120.2ce9c8ee.js"><link rel="prefetch" href="/assets/js/121.5392c751.js"><link rel="prefetch" href="/assets/js/13.f3bb482e.js"><link rel="prefetch" href="/assets/js/14.0c2f1421.js"><link rel="prefetch" href="/assets/js/15.54e281ae.js"><link rel="prefetch" href="/assets/js/16.995c7fa5.js"><link rel="prefetch" href="/assets/js/17.dc666d2b.js"><link rel="prefetch" href="/assets/js/18.017a8d2f.js"><link rel="prefetch" href="/assets/js/19.77087943.js"><link rel="prefetch" href="/assets/js/20.4f6c2fc7.js"><link rel="prefetch" href="/assets/js/21.34059c5b.js">
16<link rel="prefetch" href="/assets/js/22.350028a7.js"><link rel="prefetch" href="/assets/js/23.84f549df.js"><link rel="prefetch" href="/assets/js/24.70a676ea.js"><link rel="prefetch" href="/assets/js/25.b01f0e75.js"><link rel="prefetch" href="/assets/js/26.3cd1e824.js"><link rel="prefetch" href="/assets/js/27.af6a9cfa.js"><link rel="prefetch" href="/assets/js/28.7fd4eb8d.js"><link rel="prefetch" href="/assets/js/29.65950711.js"><link rel="prefetch" href="/assets/js/3.168aab83.js"><link rel="prefetch" href="/assets/js/30.764d7f1d.js"><link rel="prefetch" href="/assets/js/31.4570813d.js"><link rel="prefetch" href="/assets/js/32.f67037f3.js"><link rel="prefetch" href="/assets/js/33.580f334a.js"><link rel="prefetch" href="/assets/js/34.d5d75fa7.js"><link rel="prefetch" href="/assets/js/35.cef70e63.js"><link rel="prefetch" href="/assets/js/36.2455c40a.js"><link rel="prefetch" href="/assets/js/37.f2a6f6a9.js"><link rel="prefetch" href="/assets/js/38.ab858fd0.js"><link rel="prefetch" href="/assets/js/39.c21a1434.js"><link rel="prefetch" href="/assets/js/4.e548210f.js"><link rel="prefetch" href="/assets/js/40.1da28282.js"><link rel="prefetch" href="/assets/js/41.001298a7.js"><link rel="prefetch" href="/assets/js/42.8b4a5a05.js"><link rel="prefetch" href="/assets/js/43.1d0e8f90.js"><link rel="prefetch" href="/assets/js/44.909b68fc.js"><link rel="prefetch" href="/assets/js/45.86b70305.js"><link rel="prefetch" href="/assets/js/46.7149fd1e.js"><link rel="prefetch" href="/assets/js/47.2da70def.js"><link rel="prefetch" href="/assets/js/48.bb547171.js"><link rel="prefetch" href="/assets/js/49.9392738f.js"><link rel="prefetch" href="/assets/js/5.19aea3eb.js"><link rel="prefetch" href="/assets/js/50.b025f422.js"><link rel="prefetch" href="/assets/js/51.1cdfc390.js"><link rel="prefetch" href="/assets/js/52.3ec5a709.js"><link rel="prefetch" href="/assets/js/53.5851a623.js"><link rel="prefetch" href="/assets/js/54.95d70719.js"><link rel="prefetch" href="/assets/js/56.c5a49b39.js"><link rel="prefetch" href="/assets/js/57.8dacfacb.js"><link rel="prefetch" href="/assets/js/58.7feaa12a.js"><link rel="prefetch" href="/assets/js/59.49be7fb4.js"><link rel="prefetch" href="/assets/js/6.12ea75df.js"><link rel="prefetch" href="/assets/js/60.c9f877c4.js"><link rel="prefetch" href="/assets/js/61.41402b1f.js"><link rel="prefetch" href="/assets/js/62.a56f6729.js"><link rel="prefetch" href="/assets/js/63.92134bdb.js"><link rel="prefetch" href="/assets/js/64.ddc094fc.js"><link rel="prefetch" href="/assets/js/65.4169aab1.js"><link rel="prefetch" href="/assets/js/66.74d79156.js"><link rel="prefetch" href="/assets/js/67.cc01577c.js"><link rel="prefetch" href="/assets/js/68.8333840b.js"><link rel="prefetch" href="/assets/js/69.fd436613.js"><link rel="prefetch" href="/assets/js/7.35a634be.js"><link rel="prefetch" href="/assets/js/70.95948ab0.js"><link rel="prefetch" href="/assets/js/71.f34de52d.js"><link rel="prefetch" href="/assets/js/72.43f0f21c.js"><link rel="prefetch" href="/assets/js/73.7a7c1b60.js"><link rel="prefetch" href="/assets/js/74.848b5521.js"><link rel="prefetch" href="/assets/js/75.bf46fded.js"><link rel="prefetch" href="/assets/js/76.47bbfc94.js"><link rel="prefetch" href="/assets/js/77.6d167624.js"><link rel="prefetch" href="/assets/js/78.5467f2d1.js"><link rel="prefetch" href="/assets/js/79.7f600e80.js"><link rel="prefetch" href="/assets/js/8.d2054964.js"><link rel="prefetch" href="/assets/js/80.ed0b30d3.js"><link rel="prefetch" href="/assets/js/81.91e990cd.js"><link rel="prefetch" href="/assets/js/82.23e74984.js"><link rel="prefetch" href="/assets/js/83.1cb8d61c.js"><link rel="prefetch" href="/assets/js/84.f8fb6903.js"><link rel="prefetch" href="/assets/js/85.ac3cc503.js"><link rel="prefetch" href="/assets/js/86.d470b39d.js"><link rel="prefetch" href="/assets/js/87.ecb58178.js"><link rel="prefetch" href="/assets/js/88.d403d387.js"><link rel="prefetch" href="/assets/js/89.690c9003.js"><link rel="prefetch" href="/assets/js/9.8205c5bb.js"><link rel="prefetch" href="/assets/js/90.fb7c7538.js"><link rel="prefetch" href="/assets/js/91.cbb07b7b.js">
16<link rel="prefetch" href="/assets/js/92.61406345.js"><link rel="prefetch" href="/assets/js/93.8d9bcb03.js"><link rel="prefetch" href="/assets/js/94.6da012e7.js"><link rel="prefetch" href="/assets/js/95.93e4d66b.js"><link rel="prefetch" href="/assets/js/96.b98fe530.js"><link rel="prefetch" href="/assets/js/97.406576ac.js"><link rel="prefetch" href="/assets/js/98.7886617d.js"><link rel="prefetch" href="/assets/js/99.5c9fd90f.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.7c5a0803.js"> 17 <link rel="stylesheet" href="/assets/css/0.styles.2f039b9c.css"> 18 </head> 19 <body> 20 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" aria-current="page" class="home-link router-link-exact-active router-link-active"><img src="/abs-horizontal.png" alt="The ABS programming language" class="logo"> <span class="site-name can-hide">The ABS programming language</span></a> <div class="links"><!----> <nav class="nav-links can-hide"><div class="nav-item"><a href="/quickstart/" class="nav-link"> 21 Quick start 22</a></div><div class="nav-item"><a href="/docs/" class="nav-link"> 23 Docs 24</a></div><div class="nav-item"><a href="/playground/" class="nav-link"> 25 Playground 26</a></div> <a href="https://github.com/abs-lang/abs" target="_blank" rel="noopener noreferrer" class="repo-link"> 27 GitHub 28 <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/quickstart/" class="nav-link"> 29 Quick start 30</a></div><div class="nav-item"><a href="/docs/" class="nav-link"> 31 Docs 32</a></div><div class="nav-item"><a href="/playground/" class="nav-link"> 33 Playground 34</a></div> <a href="https://github.com/abs-lang/abs" target="_blank" rel="noopener noreferrer" class="repo-link"> 35 GitHub 36 <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <!----> </aside> <main aria-labelledby="main-title" class="home" data-v-60105dea><header class="hero" data-v-60105dea><img src="/abs-horizontal.png" alt="hero" data-v-60105dea> <h1 id="main-title" data-v-60105dea> 37 The ABS programming language 38 </h1> <p class="description" data-v-60105dea> 39 Bring back the joy of shell scripting. 40 </p> <p class="action" data-v-60105dea><a href="/quickstart/" class="nav-link action-button" data-v-60105dea> 41 Quick Start â 42</a></p></header> <div class="features" data-v-60105dea><div class="feature" data-v-60105dea><h2 data-v-60105dea>A familiar syntax</h2> <p data-v-60105dea>ABS should look familiar to most of us, as its elements are borrowed from popular programming languages such as Ruby, Python or JavaScript:</p> <pre tabindex="0" class="language-markup" data-v-60105dea><code class="language-clike" data-v-60105dea>obj <span class="token operator" data-v-60105dea>=</span> <span class="token punctuation" data-v-60105dea>{</span><span class="token punctuation" data-v-60105dea>}</span> 43<span class="token keyword" data-v-60105dea>for</span> n <span class="token keyword" data-v-60105dea>in</span> <span class="token number" data-v-60105dea>1.</span><span class="token number" data-v-60105dea>.10</span> <span class="token punctuation" data-v-60105dea>{</span> 44 <span class="token keyword" data-v-60105dea>if</span> n <span class="token operator" data-v-60105dea>%</span> <span class="token number" data-v-60105dea>2</span> <span class="token operator" data-v-60105dea>==</span> <span class="token number" data-v-60105dea>0</span> <span class="token punctuation" data-v-60105dea>{</span> 45 obj<span class="token punctuation" data-v-60105dea>[</span>n.str()<span class="token punctuation" data-v-60105dea>]</span> <span class="token operator" data-v-60105dea>=</span> <span class="token function" data-v-60105dea>rand</span><span class="token punctuation" data-v-60105dea>(</span><span class="token number" data-v-60105dea>6</span><span class="token operator" data-v-60105dea>*</span><span class="token operator" data-v-60105dea>*</span><span class="token number" data-v-60105dea>2</span><span class="token punctuation" data-v-60105dea>)</span> 46 <span class="token punctuation" data-v-60105dea>}</span> 47<span class="token punctuation" data-v-60105dea>}</span> 48<span class="token function" data-v-60105dea>echo</span><span class="token punctuation" data-v-60105dea>(</span><span class="token string" data-v-60105dea>"We have %s"</span><span class="token punctuation" data-v-60105dea>,</span> obj<span class="token punctuation" data-v-60105dea>)</span> 49# We have <span class="token punctuation" data-v-60105dea>{</span><span class="token string" data-v-60105dea>"10"</span><span class="token punctuation" data-v-60105dea>:</span> <span class="token number" data-v-60105dea>79</span><span class="token punctuation" data-v-60105dea>,</span> <span class="token punctuation" data-v-60105dea>.</span><span class="token punctuation" data-v-60105dea>.</span><span class="token punctuation" data-v-60105dea>.</span><span class="token punctuation" data-v-60105dea>}</span></code></pre></div> <div class="feature" data-v-60105dea><h2 data-v-60105dea>Scripting made easy</h2> <p data-v-60105dea>System commands are deeply integrated (and encouraged); they make ABS ideal to work with in the context of shell scripting:</p> <pre tabindex="0" class="language-markup" data-v-60105dea><code class="language-javascript" data-v-60105dea>ip <span class="token operator" data-v-60105dea>=</span> <span class="token template-string" data-v-60105dea><span class="token template-punctuation string" data-v-60105dea>`</span><span class="token string" data-v-60105dea>curl icanhazip.com</span><span class="token template-punctuation string" data-v-60105dea>`</span></span> 50 51ip<span class="token punctuation" data-v-60105dea>.</span>ok <span class="token comment" data-v-60105dea>// true</span> 52ip <span class="token comment" data-v-60105dea>// 1.2.3.4</span> 53 54<span class="token function" data-v-60105dea>echo</span><span class="token punctuation" data-v-60105dea>(</span><span class="token string" data-v-60105dea>"type something..."</span><span class="token punctuation" data-v-60105dea>)</span> 55input <span class="token operator" data-v-60105dea>=</span> <span class="token function" data-v-60105dea>stdin</span><span class="token punctuation" data-v-60105dea>(</span><span class="token punctuation" data-v-60105dea>)</span> 56<span class="token function" data-v-60105dea>echo</span><span class="token punctuation" data-v-60105dea>(</span><span class="token string" data-v-60105dea>"you typed %s",</span>input<span class="token punctuation" data-v-60105dea>)</span></code></pre></div> <div class="feature" data-v-60105dea><h2 data-v-60105dea>Easy to run</h2> <p data-v-60105dea>Grab the latest release, run <code data-v-60105dea>abs your_script.abs</code> and see the magic happening. ABS works on Mac, Windows and Linux:</p> <pre tabindex="0" class="language-markup" data-v-60105dea><code class="language-markup" data-v-60105dea>$ abs test.abs 57 581.2.3.4 59 60type something... 61Hello world! 62you typed Hello world! 63$</code></pre></div></div> <div class="theme-default-content custom content__default" data-v-60105dea></div> <div class="footer" data-v-60105dea> 64 Â©ï¸ 2025 -- No developers were harmed in the making of this language 65 </div></main></div><div class="global-ui"></div></div> 66
66<script src="/assets/js/app.2cf85281.js" defer></script>
66<script src="/assets/js/2.9eadad48.js" defer></script>
66<script src="/assets/js/1.f429aa72.js" defer></script>
66<script src="/assets/js/55.58a5e4f2.js" defer></script>
66 67 </body> 68</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.