Bash Scripting For Automation Practice Exam
Question 1 of 50
while IFS= read -r line; do echo "$line"; done < file.txt
IFS=
$(command)
`command`
$(...)
$(( expression ))
$(( a + b * 2 ))
+
-
*
/
%
**
read -rp "Prompt: " answer
-r
-p
(cd /tmp && cmd)
source
.
${var#pattern}
${var##pattern}
${var%suffix}
${var%%suffix}
alias ll='ls -la'
~/.bashrc
local
#!/usr/bin/env bash
#!/bin/bash
( commands )
cd
NAME=value
=
$NAME
${NAME}
case "$(uname -s)" in Linux) ;; *) echo "Linux only"; exit 1 ;; esac
[[ "$(uname)" == "Linux" ]]
joined=$(IFS=,; echo "${arr[*]}")
joined="${arr[*]}"
IFS=,
printf '%s\\n' "${arr[@]}" | paste -sd ,
-e
-f
-d
-L
-w
-x
-s
!
[[ -f "$file" ]]
read
shopt -s nocaseglob
shopt -s dotglob
shopt -s globstar
-d DELIM
read -d ''
find -print0
name() { commands; }
function name { commands; }
for arg in "$@"; do echo "$arg"; done
"$@"
${VAR}
${VAR}suffix
$VARsuffix
sh
./script.sh
declare -r
readonly
declare -r VERSION="1.0"
find
-print0
-a
-b value
while getopts "ab:c" opt; do case $opt in ... esac; done
OPTARG
$OPTIND
basename /a/b/c.sh
c.sh
dirname /a/b/c.sh
/a/b
xargs -0
while IFS= read -r -d '' f; do ...; done
$(echo $(date))
out=$(cmd 2>&1)
out=$(cmd 2>&1; echo "rc=$?")
cmd >out 2>err
[[ -z "$s" ]]
-n
==
!=
<
>
${#var}
${#arr[@]}
set -e
[[ -n "${BASH_VERSION:-}" ]] || { echo "Need bash"; exit 1; }
n=$((10#$s))
declare -i n=$s
$(cmd)
`cmd`
case "$x" in\n start) ... ;;\n stop|halt) ... ;;\n *) default ;;\nesac
|
local foo=bar
xargs
set -euo pipefail
IFS=$'\n\t'
for f in a b c; do echo "$f"; done
xargs -0 -n 1 -I {} cmd {}
$0
${BASH_SOURCE[0]}
bash
script.sh
dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
${var^^}
${var,,}
${var^}
${var,}
VAR = value
VAR
value
wc -l < file.txt
awk 'END{print NR}' file
grep -c '' file
$?
basename
dirname
$PATH
\\0
printf
for item in "${arr[@]}"; do echo "$item"; done
[@]
IFS=: read -r user _ uid _ _ home _ < /etc/passwd
for f in *.txt
exec > >(while IFS= read -r line; do printf '%s %s\\n' "$(date '+%F %T')" "$line"; done) 2>&1
ts '[%F %T]'
moreutils
declare -A m=([key1]=val1 [key2]=val2)
${m[key1]}
${!m[@]}
${#m[@]}
[[ "$s" =~ ^[0-9]+$ ]]
if [[ "$s" =~ ^([A-Z]+)-([0-9]+)$ ]]; then echo "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}"; fi
exec
IFS
"$var"
exec > file
break
continue
break 2
command -v cmd >/dev/null 2>&1
which cmd
if
if command -v docker >/dev/null; then ...
cd /path || exit 1
pushd /path || exit
export VAR=value
VAR=value; export VAR
printf '%s\\n' "error" >&2
echo "error" >&2
echo
printf '%s\\n' "$var"
shopt
for i in "${!arr[@]}"; do echo "$i=${arr[i]}"; done
${!arr[@]}
arr
PS4
&
long_job &
wait %1
wait $pid
set -u
shopt -s nullglob
shopt -s failglob
set -x
PS4='+ ${BASH_SOURCE}:${LINENO}: '
${var/old/new}
${var//old/new}
${var/#old/new}
${var/%old/new}
$1
$2
declare -n refname=array
cmd > out.log 2> err.log
2>&1
?
[...]
set -f
set -f; set +f
time
time cmd
TIMEFORMAT='%R'; time { cmd1; cmd2; }
${TIMEFORMAT}
SECONDS=0; cmd; echo "$SECONDS"
awk
bc
awk -v a=1.5 -v b=1.4 'BEGIN{exit !(a>b)}'
(( $(echo "$a > $b" | bc -l) ))
${VAR:?message}
message
[[ $EUID -eq 0 ]]
[[ "$(id -u)" -eq 0 ]]
declare -i n=1+2
n=3
((n++))
bash -n
shellcheck script.sh
rm -i
cmd >> log.txt 2>&1
>>
tmp=$(mktemp)
tmpd=$(mktemp -d)
/tmp
arr+=(four five)
arr+=("six")
cat <<EOF\nline 1\nline 2\nEOF
<<'EOF'
$#
getopts
shift $((OPTIND-1))
until
[ = "bar" ]
if [ "$foo" = "bar" ]
[[ "$foo" == "bar" ]]
until ping -c1 host; do sleep 5; done
for
for (( i=0; i<10; i++ )); do echo "$i"; done
"$1" "$2" "$3" ...
: "${VAR:=default}"
elif
else
fi
source config.sh
. config.sh
while
||
&&
crontab -e
0 3 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
PATH
sh script.sh
trap 'cleanup' EXIT
EXIT
SIGKILL
(( ))
if (( a < b )); then ...; fi
trap 'rm -f "$tmpfile"' EXIT
while condition; do body; done
eval "$(declare -f funcname)"
Question navigator