(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
@file:Suppress("PackageDirectoryMismatch") | |
/* | |
* Copyright (c) 2018 Intrepid Pursuits,Inc. All rights reserved. | |
*/ | |
package kotlinx.coroutines.experimental.intrepid | |
import kotlinx.coroutines.experimental.* | |
import java.util.concurrent.PriorityBlockingQueue | |
import java.util.concurrent.TimeUnit |
import kotlin.coroutines.experimental.* | |
import kotlin.coroutines.experimental.intrinsics.* | |
fun main(args: Array<String>) { | |
enumerate { | |
if (flip("A")) { | |
if (flip("B")) 1 else 2 | |
} else { | |
if (flip("C")) 3 else if (flip("D")) 4 else 5 | |
} |
node { | |
echo 'Results included as an inline comment exactly how they are returned as of Jenkins 2.121, with $BUILD_NUMBER = 1' | |
echo 'No quotes, pipeline command in single quotes' | |
sh 'echo $BUILD_NUMBER' // 1 | |
echo 'Double quotes are silently dropped' | |
sh 'echo "$BUILD_NUMBER"' // 1 | |
echo 'Even escaped with a single backslash they are dropped' | |
sh 'echo \"$BUILD_NUMBER\"' // 1 | |
echo 'Using two backslashes, the quotes are preserved' | |
sh 'echo \\"$BUILD_NUMBER\\"' // "1" |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
#!/bin/bash | |
# | |
# Example of how to parse short/long options with 'getopt' | |
# | |
OPTS=`getopt -o vhns: --long verbose,dry-run,help,stack-size: -n 'parse-options' -- "$@"` | |
if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi | |
echo "$OPTS" |