abs

Home of the ABS programming language: the joy of shell scripting.


abs language logo

Travis Status License Version undefined undefined
undefined undefined Coverage Status
undefined undefined undefined undefined

ABS is a scripting language that works best when you’re scripting on your terminal. It tries to combine the elegance of languages such as Python, or Ruby, to the convenience of Bash.

tz = $(cat /etc/timezone);
continent, city = tz.split("/")

echo("Best city in the world?")

selection = stdin()

if selection == city {
  echo("You might be biased...")
}

See it in action:

asciicast

Let’s now try to fetch our IP address and print the sum of its parts, if its higher than 100. Here’s how you could do it in Bash:

# Simple program that fetches your IP and sums it up
RES=$(curl -s 'https://api.ipify.org?format=json' || "ERR")

if [ "$RES" = "ERR" ]; then
    echo "An error occurred"
    exit 1
fi

IP=$(echo $RES | jq -r ".ip")
IFS=. read first second third fourth <<EOF
${IP##*-}
EOF

total=$((first + second + third + fourth))
if [ $total -gt 100 ]; then
    echo "The sum of [$IP] is a large number, $total."
fi

And here’s how you could write the same code in ABS:

# Simple program that fetches your IP and sums it up
res = $(curl -s 'https://api.ipify.org?format=json');

if !res.ok {
  echo("An error occurred: %s", res)
  exit(1)
}

ip = res.json().ip
total = ip.split(".").map(int).sum()
if total > 100 {
    echo("The sum of [%s] is a large number, %s.", ip, total)
}

Wondering how you can run this code? Simply grab the latest release and run:

$ abs script.abs

You can also install ABS with the 1-command installer:

bash <(curl https://www.abs-lang.org/installer.sh)

(you might need to sudo right before that)

Table of contents

Introduction

Syntax

Types and functions

Miscellaneous