diff --git a/autogen.sh b/autogen.sh index c817090183..39eb82203d 100755 --- a/autogen.sh +++ b/autogen.sh @@ -16,7 +16,7 @@ automake --version | awk '{print $NF; exit}' | ( dir="${dir%/Makefile.am}" grep -q '%[CD]%' "$dir/Makefile.am" || continue - reldir="${dir#$root}" + reldir="${dir#"$root"}" reldir="${reldir#/}" canon_reldir="$(printf '%s' "$reldir" | tr -C 'a-zA-Z0-9@_' '_')" diff --git a/config/Shellcheck.am b/config/Shellcheck.am index 8789195753..1cff81e04b 100644 --- a/config/Shellcheck.am +++ b/config/Shellcheck.am @@ -3,6 +3,7 @@ # ShellCheck can't follow non-constant source. Use a directive to specify location. [SC1090] # Not following: a was not specified as input (see shellcheck -x). [SC1091] # Prefer putting braces around variable references even when not strictly required. [SC2250] +# Consider invoking this command separately to avoid masking its return value (or use '|| true' to ignore). [SC2312] # In POSIX sh, 'local' is undefined. [SC2039] # older ShellCheck versions # In POSIX sh, 'local' is undefined. [SC3043] # newer ShellCheck versions @@ -17,7 +18,7 @@ PHONY += shellcheck _STGT = $(subst ^,/,$(subst shellcheck-here-,,$@)) shellcheck-here-%: if HAVE_SHELLCHECK - shellcheck --format=gcc --enable=all --exclude=SC1090,SC1091,SC2039,SC2250,SC3043 $$([ -n "$(SHELLCHECK_SHELL)" ] && echo "--shell=$(SHELLCHECK_SHELL)") "$$([ -e "$(_STGT)" ] || echo "$(srcdir)/")$(_STGT)" + shellcheck --format=gcc --enable=all --exclude=SC1090,SC1091,SC2039,SC2250,SC2312,SC3043 $$([ -n "$(SHELLCHECK_SHELL)" ] && echo "--shell=$(SHELLCHECK_SHELL)") "$$([ -e "$(_STGT)" ] || echo "$(srcdir)/")$(_STGT)" else @echo "skipping shellcheck of" $(_STGT) "because shellcheck is not installed" endif diff --git a/contrib/bash_completion.d/zfs.in b/contrib/bash_completion.d/zfs.in index 72e1092a03..c5cfd8e8ef 100644 --- a/contrib/bash_completion.d/zfs.in +++ b/contrib/bash_completion.d/zfs.in @@ -63,11 +63,11 @@ __zfs_list_filesystems() __zfs_match_snapshot() { local base_dataset="${cur%@*}" - if [ "$base_dataset" != "$cur" ] + if [[ "$base_dataset" != "$cur" ]] then $__ZFS_CMD list -H -o name -s name -t snapshot -d 1 "$base_dataset" else - if [ "$cur" != "" ] && __zfs_list_datasets "$cur" &> /dev/null + if [[ "$cur" != "" ]] && __zfs_list_datasets "$cur" &> /dev/null then $__ZFS_CMD list -H -o name -s name -t filesystem,volume -r "$cur" | tail -n +2 # We output the base dataset name even though we might be @@ -104,7 +104,7 @@ __zfs_match_snapshot() __zfs_match_snapshot_or_bookmark() { local base_dataset="${cur%[#@]*}" - if [ "$base_dataset" != "$cur" ] + if [[ "$base_dataset" != "$cur" ]] then if [[ $cur == *@* ]] then @@ -114,7 +114,7 @@ __zfs_match_snapshot_or_bookmark() fi else $__ZFS_CMD list -H -o name -s name -t filesystem,volume - if [ -e "$cur" ] && $__ZFS_CMD list -H -o name -s name -t filesystem,volume "$cur" &> /dev/null + if [[ -e "$cur" ]] && $__ZFS_CMD list -H -o name -s name -t filesystem,volume "$cur" &> /dev/null then echo "$cur@" echo "$cur#" @@ -126,10 +126,10 @@ __zfs_match_multiple_snapshots() { local existing_opts existing_opts="$(expr "$cur" : '\(.*\)[%,]')" - if [ -e "$existing_opts" ] + if [[ -e "$existing_opts" ]] then local base_dataset="${cur%@*}" - if [ "$base_dataset" != "$cur" ] + if [[ "$base_dataset" != "$cur" ]] then local cur="${cur##*,}" if [[ $cur =~ ^%|%.*% ]] @@ -199,7 +199,7 @@ __zfs_complete_multiple_options() mapfile -t COMPREPLY < <(compgen -W "$options" -- "${cur##*,}") existing_opts=$(expr "$cur" : '\(.*,\)') - if [ -n "$existing_opts" ] + if [[ -n "$existing_opts" ]] then COMPREPLY=( "${COMPREPLY[@]/#/${existing_opts}}" ) fi diff --git a/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in b/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in index df8df3181f..b1f2d8f4c7 100755 --- a/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in +++ b/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in @@ -3,7 +3,7 @@ get_devtype() { local typ typ=$(udevadm info --query=property --name="$1" | sed -n 's|^ID_FS_TYPE=||p') - if [ -z "$typ" ] ; then + if [[ -z "$typ" ]] ; then typ=$(blkid -c /dev/null "$1" -o value -s TYPE) fi echo "$typ" @@ -22,7 +22,7 @@ get_pool_devices() { else awk -F '\t' '/\t\/dev/ { print $2 }' "$poolconfigtemp" | \ while read -r pooldev ; do - if [ -e "$pooldev" ] ; then + if [[ -e "$pooldev" ]] ; then resolved="$(readlink -f "$pooldev")" dinfo "zfsexpandknowledge: pool $1 has device $pooldev (which resolves to $resolved)" echo "$resolved" @@ -38,15 +38,15 @@ find_zfs_block_devices() { local fstype local _ numfields="$(awk '{print NF; exit}' /proc/self/mountinfo)" - if [ "$numfields" = "10" ] ; then + if [[ "$numfields" = "10" ]] ; then fields="_ _ _ _ mp _ _ fstype dev _" else fields="_ _ _ _ mp _ _ _ fstype dev _" fi # shellcheck disable=SC2086 while read -r ${fields?} ; do - [ "$fstype" = "zfs" ] || continue - [ "$mp" = "$1" ] && get_pool_devices "${dev%%/*}" + [[ "$fstype" = "zfs" ]] || continue + [[ "$mp" = "$1" ]] && get_pool_devices "${dev%%/*}" done < /proc/self/mountinfo } @@ -73,7 +73,7 @@ check() { local _depdevtype # shellcheck disable=SC2154 -if [ -n "$hostonly" ]; then +if [[ -n "$hostonly" ]]; then for mp in \ "/" \ @@ -92,7 +92,7 @@ if [ -n "$hostonly" ]; then mp=$(readlink -f "$mp") mountpoint "$mp" >/dev/null 2>&1 || continue blockdevs=$(find_zfs_block_devices "$mp") - if [ -z "$blockdevs" ] ; then continue ; fi + if [[ -z "$blockdevs" ]] ; then continue ; fi dinfo "zfsexpandknowledge: block devices backing ZFS dataset $mp: ${blockdevs//$'\n'/ }" for dev in $blockdevs do @@ -100,9 +100,9 @@ if [ -n "$hostonly" ]; then fstype=$(get_devtype "$dev") host_fs_types["$dev"]="$fstype" majmin=$(get_maj_min "$dev") - if [ -d "/sys/dev/block/$majmin/slaves" ] ; then + if [[ -d "/sys/dev/block/$majmin/slaves" ]] ; then for _depdev in "/sys/dev/block/$majmin/slaves"/*; do - [ -f "$_depdev/dev" ] || continue + [[ -f "$_depdev/dev" ]] || continue _depdev="/dev/${_depdev##*/}" _depdevname=$(udevadm info --query=property --name="$_depdev" | sed -n 's|^DEVNAME=||p') _depdevtype=$(get_devtype "$_depdevname") diff --git a/contrib/dracut/90zfs/module-setup.sh.in b/contrib/dracut/90zfs/module-setup.sh.in index 528abe4295..78c74e7423 100755 --- a/contrib/dracut/90zfs/module-setup.sh.in +++ b/contrib/dracut/90zfs/module-setup.sh.in @@ -3,7 +3,7 @@ check() { # We depend on udev-rules being loaded - [ "${1}" = "-d" ] && return 0 + [[ "${1}" = "-d" ]] && return 0 # Verify the zfs tool chain for tool in "zgenhostid" "zpool" "zfs" "mount.zfs"; do @@ -50,7 +50,7 @@ install() { fi inst_hook cmdline 95 "${moddir}/parse-zfs.sh" - if [ -n "${systemdutildir}" ]; then + if [[ -n "${systemdutildir}" ]]; then inst_script "${moddir}/zfs-generator.sh" "${systemdutildir}/system-generators/dracut-zfs-generator" fi inst_hook pre-mount 90 "${moddir}/zfs-load-key.sh" @@ -68,7 +68,7 @@ install() { # Synchronize initramfs and system hostid if ! inst_simple -H @sysconfdir@/hostid; then - if HOSTID="$(hostid 2>/dev/null)" && [ "${HOSTID}" != "00000000" ]; then + if HOSTID="$(hostid 2>/dev/null)" && [[ "${HOSTID}" != "00000000" ]]; then zgenhostid -o "${initdir}@sysconfdir@/hostid" "${HOSTID}" mark_hostonly @sysconfdir@/hostid fi diff --git a/contrib/initramfs/scripts/zfs b/contrib/initramfs/scripts/zfs index 1c8c496a7f..587dd5eba9 100644 --- a/contrib/initramfs/scripts/zfs +++ b/contrib/initramfs/scripts/zfs @@ -640,8 +640,8 @@ setup_snapshot_booting() # rpool/ROOT/debian/boot@snap2 => rpool/ROOT/debian_snap2/boot # rpool/ROOT/debian/usr@snap2 => rpool/ROOT/debian_snap2/usr # rpool/ROOT/debian/var@snap2 => rpool/ROOT/debian_snap2/var - subfs="${s##$rootfs}" - subfs="${subfs%%@$snapname}" + subfs="${s##"$rootfs"}" + subfs="${subfs%%@"$snapname"}" destfs="${rootfs}_${snapname}" # base fs. [ -n "$subfs" ] && destfs="${destfs}$subfs" # + sub fs. diff --git a/scripts/common.sh.in b/scripts/common.sh.in index 8268315b33..33669457f4 100644 --- a/scripts/common.sh.in +++ b/scripts/common.sh.in @@ -8,15 +8,15 @@ export ZTS_DIR= export SCRIPT_DIR= # General commands -export ZDB=${ZDB:-$SBIN_DIR/zdb} -export ZFS=${ZFS:-$SBIN_DIR/zfs} -export ZPOOL=${ZPOOL:-$SBIN_DIR/zpool} -export ZTEST=${ZTEST:-$SBIN_DIR/ztest} -export ZFS_SH=${ZFS_SH:-$SCRIPT_DIR/zfs.sh} +export ZDB="${ZDB:-$SBIN_DIR/zdb}" +export ZFS="${ZFS:-$SBIN_DIR/zfs}" +export ZPOOL="${ZPOOL:-$SBIN_DIR/zpool}" +export ZTEST="${ZTEST:-$SBIN_DIR/ztest}" +export ZFS_SH="${ZFS_SH:-$SCRIPT_DIR/zfs.sh}" # Test Suite -export RUNFILE_DIR=${RUNFILE_DIR:-$ZTS_DIR/runfiles} -export TEST_RUNNER=${TEST_RUNNER:-$ZTS_DIR/test-runner/bin/test-runner.py} -export ZTS_REPORT=${ZTS_REPORT:-$ZTS_DIR/test-runner/bin/zts-report.py} -export STF_TOOLS=${STF_TOOLS:-$ZTS_DIR/test-runner} -export STF_SUITE=${STF_SUITE:-$ZTS_DIR/zfs-tests} +export RUNFILE_DIR="${RUNFILE_DIR:-$ZTS_DIR/runfiles}" +export TEST_RUNNER="${TEST_RUNNER:-$ZTS_DIR/test-runner/bin/test-runner.py}" +export ZTS_REPORT="${ZTS_REPORT:-$ZTS_DIR/test-runner/bin/zts-report.py}" +export STF_TOOLS="${STF_TOOLS:-$ZTS_DIR/test-runner}" +export STF_SUITE="${STF_SUITE:-$ZTS_DIR/zfs-tests}" diff --git a/scripts/kmodtool b/scripts/kmodtool index a79ad0c7a0..6eea8fe50f 100755 --- a/scripts/kmodtool +++ b/scripts/kmodtool @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# shellcheck disable=SC2086 +# shellcheck disable=SC2086,SC2295 # kmodtool - Helper script for building kernel module RPMs # Copyright (c) 2003-2012 Ville Skyttä , @@ -125,10 +125,10 @@ EOF print_rpmtemplate_per_kmodpkg () { - if [ "${1}" = "--custom" ]; then + if [[ "${1}" = "--custom" ]]; then shift local customkernel=true - elif [ "${1}" = "--redhat" ]; then + elif [[ "${1}" = "--redhat" ]]; then # this is needed for akmods shift local redhatkernel=true @@ -139,7 +139,7 @@ print_rpmtemplate_per_kmodpkg () # Detect depmod install location local depmod_path=/sbin/depmod - if [ ! -f "${depmod_path}" ]; then + if [[ ! -f "${depmod_path}" ]]; then depmod_path=/usr/sbin/depmod fi @@ -163,24 +163,24 @@ Requires(postun): kmod EOF # second part - if [ -z "${customkernel}" ]; then + if [[ -z "${customkernel}" ]]; then cat < /dev/null || : -elif [ -f "/lib/modules/${kernel_uname_r}/System.map" ]; then +elif [[ -f "/lib/modules/${kernel_uname_r}/System.map" ]]; then ${prefix}${depmod_path} -aeF /lib/modules/${kernel_uname_r}/System.map ${kernel_uname_r} > /dev/null || : else ${prefix}${depmod_path} -ae ${kernel_uname_r} &> /dev/null || : fi %postun -n kmod-${kmodname}-${kernel_uname_r} -if [ -f "/boot/System.map-${kernel_uname_r}" ]; then +if [[ -f "/boot/System.map-${kernel_uname_r}" ]]; then ${prefix}${depmod_path} -aF /boot/System.map-${kernel_uname_r} ${kernel_uname_r} &> /dev/null || : -elif [ -f "/lib/modules/${kernel_uname_r}/System.map" ]; then +elif [[ -f "/lib/modules/${kernel_uname_r}/System.map" ]]; then ${prefix}${depmod_path} -aF /lib/modules/${kernel_uname_r}/System.map ${kernel_uname_r} &> /dev/null || : else ${prefix}${depmod_path} -a ${kernel_uname_r} &> /dev/null || : @@ -213,10 +213,10 @@ EOF print_rpmtemplate_kmoddevelpkg () { - if [ "${1}" = "--custom" ]; then + if [[ "${1}" = "--custom" ]]; then shift local customkernel=true - elif [ "${1}" = "--redhat" ]; then + elif [[ "${1}" = "--redhat" ]]; then shift local redhatkernel=true fi @@ -230,7 +230,7 @@ Group: System Environment/Kernel Provides: ${kmodname}-devel-kmod = %{?epoch:%{epoch}:}%{version}-%{release} EOF - if [ -z "${customkernel}" ] && [ -z "${redhatkernel}" ]; then + if [[ -z "${customkernel}" ]] && [[ -z "${redhatkernel}" ]]; then echo "Requires: kmod-${kmodname}-devel-${kernel_uname_r} >= %{?epoch:%{epoch}:}%{version}-%{release}" fi @@ -256,10 +256,10 @@ EOF print_rpmtemplate_per_kmoddevelpkg () { - if [ "${1}" = "--custom" ]; then + if [[ "${1}" = "--custom" ]]; then shift local customkernel=true - elif [ "${1}" = "--redhat" ]; then + elif [[ "${1}" = "--redhat" ]]; then # this is needed for akmods shift local redhatkernel=true @@ -279,7 +279,7 @@ Provides: kmod-${kmodname}-devel-uname-r = ${kernel_uname_r} EOF # second part - if [ -z "${customkernel}" ]; then + if [[ -z "${customkernel}" ]]; then cat < -- Build root (place to look for build files)" } -while [ -n "${1}" ] ; do +while [[ -n "${1}" ]] ; do case "${1}" in --filterfile) shift - if [ -z "${1}" ] ; then + if [[ -z "${1}" ]] ; then error_out 2 "Please provide path to a filter-file together with --filterfile" >&2 - elif [ ! -e "${1}" ]; then + elif [[ ! -e "${1}" ]]; then error_out 2 "Filterfile ${1} not found" >&2 fi filterfile="${1}" @@ -437,7 +437,7 @@ while [ -n "${1}" ] ; do ;; --kmodname) shift - if [ -z "${1}" ] ; then + if [[ -z "${1}" ]] ; then error_out 2 "Please provide the name of the kmod together with --kmodname" >&2 fi # strip pending -kmod @@ -450,7 +450,7 @@ while [ -n "${1}" ] ; do ;; --prefix) shift - if [ -z "${1}" ] ; then + if [[ -z "${1}" ]] ; then error_out 2 "Please provide a prefix with --prefix" >&2 fi prefix="${1}" @@ -458,7 +458,7 @@ while [ -n "${1}" ] ; do ;; --repo) shift - if [ -z "${1}" ] ; then + if [[ -z "${1}" ]] ; then error_out 2 "Please provide the name of the repo together with --repo" >&2 fi repo=${1} @@ -466,7 +466,7 @@ while [ -n "${1}" ] ; do ;; --for-kernels) shift - if [ -z "${1}" ] ; then + if [[ -z "${1}" ]] ; then error_out 2 "Please provide the name of the kmod together with --kmodname" >&2 fi for_kernels="${1}" @@ -514,28 +514,28 @@ while [ -n "${1}" ] ; do esac done -if [ -e ./kmodtool-kernel-variants ]; then +if [[ -e ./kmodtool-kernel-variants ]]; then kernels_known_variants="$(cat ./kmodtool-kernel-variants)" -elif [ -e /usr/share/kmodtool/kernel-variants ] ; then +elif [[ -e /usr/share/kmodtool/kernel-variants ]] ; then kernels_known_variants="$(cat /usr/share/kmodtool/kernel-variants)" else kernels_known_variants="@(smp?(-debug)|PAE?(-debug)|debug|kdump|xen|kirkwood|highbank|imx|omap|tegra)" fi # general sanity checks -if [ -z "${target}" ]; then +if [[ -z "${target}" ]]; then error_out 2 "please pass target arch with --target" -elif [ -z "${kmodname}" ]; then +elif [[ -z "${kmodname}" ]]; then error_out 2 "please pass kmodname with --kmodname" -elif [ -z "${kernels_known_variants}" ] ; then +elif [[ -z "${kernels_known_variants}" ]] ; then error_out 2 "could not determine known variants" fi # go -if [ -n "${for_kernels}" ]; then +if [[ -n "${for_kernels}" ]]; then # this is easy: print_customrpmtemplate "${for_kernels}" -elif [ "${build_kernels}" = "akmod" ]; then +elif [[ "${build_kernels}" = "akmod" ]]; then # do only a akmod package print_akmodtemplate print_akmodmeta @@ -543,7 +543,7 @@ else # seems we are on out own to decide for which kernels to build # we need more sanity checks in this case - if [ -z "${repo}" ]; then + if [[ -z "${repo}" ]]; then error_out 2 "please provide repo name with --repo" elif ! command -v "buildsys-build-${repo}-kerneldevpkgs" > /dev/null 2>&1; then error_out 2 "buildsys-build-${repo}-kerneldevpkgs not found" @@ -553,14 +553,14 @@ else cmdoptions="--target ${target}" # filterfile to filter list of kernels? - if [ -n "${filterfile}" ] ; then + if [[ -n "${filterfile}" ]] ; then cmdoptions="${cmdoptions} --filterfile ${filterfile}" fi kernel_versions_to_build_for=$(buildsys-build-${repo}-kerneldevpkgs "--${build_kernels}" ${cmdoptions}) || error_out 2 "buildsys-build-${repo}-kerneldevpkgs failed: ${kernel_versions_to_build_for}" - if [ "${build_kernels}" = "current" ] && [ -z "${noakmod}" ]; then + if [[ "${build_kernels}" = "current" ]] && [[ -z "${noakmod}" ]]; then print_akmodtemplate fi diff --git a/scripts/zimport.sh b/scripts/zimport.sh index 595de494e5..2549a483b1 100755 --- a/scripts/zimport.sh +++ b/scripts/zimport.sh @@ -54,7 +54,7 @@ BASE_DIR=$(dirname "$0") SCRIPT_COMMON=common.sh -if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then +if [[ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]]; then . "${BASE_DIR}/${SCRIPT_COMMON}" else echo "Missing helper script ${SCRIPT_COMMON}" && exit 1 @@ -188,7 +188,7 @@ populate "$SRC_DIR" 10 100 SRC_DIR="$TEST_DIR/src" SRC_DIR_ZFS="$SRC_DIR/zfs" -if [ "$COLOR" = "no" ]; then +if [[ "$COLOR" = "no" ]]; then COLOR_GREEN="" COLOR_BROWN="" COLOR_RED="" @@ -230,7 +230,7 @@ src_set_vars() { ZFS_DIR="$SRC_DIR_ZFS/$ZFS_TAG" ZFS_URL="$REPO/zfs/tarball/$ZFS_TAG" - if [ "$TAG" = "installed" ]; then + if [[ "$TAG" = "installed" ]]; then ZPOOL_CMD=$(command -v zpool) ZFS_CMD=$(command -v zfs) ZFS_SH="/usr/share/zfs/zfs.sh" @@ -273,7 +273,7 @@ pool_create() { pool_set_vars "$1" src_set_vars "$1" - if [ "$POOL_TAG" != "installed" ]; then + if [[ "$POOL_TAG" != "installed" ]]; then cd "$POOL_DIR_SRC" || fail "Failed 'cd $POOL_DIR_SRC'" fi @@ -319,7 +319,7 @@ pool_create() { # If the zfs-images directory doesn't exist fetch a copy from Github then # cache it in the $TEST_DIR and update $IMAGES_DIR. -if [ ! -d "$IMAGES_DIR" ]; then +if [[ ! -d "$IMAGES_DIR" ]]; then IMAGES_DIR="$TEST_DIR/zfs-images" mkdir -p "$IMAGES_DIR" curl -sL "$IMAGES_TAR" | \ @@ -331,7 +331,7 @@ fi # list of available images for the reserved keyword 'all'. for TAG in $POOL_TAGS; do - if [ "$TAG" = "all" ]; then + if [[ "$TAG" = "all" ]]; then ALL_TAGS=$(echo "$IMAGES_DIR"/*.tar.bz2 | \ sed "s|$IMAGES_DIR/||g;s|.tar.bz2||g") NEW_TAGS="$NEW_TAGS $ALL_TAGS" @@ -341,7 +341,7 @@ for TAG in $POOL_TAGS; do done POOL_TAGS="$NEW_TAGS" -if [ "$VERBOSE" = "yes" ]; then +if [[ "$VERBOSE" = "yes" ]]; then echo "---------------------------- Options ----------------------------" echo "VERBOSE=$VERBOSE" echo "KEEP=$KEEP" @@ -353,11 +353,11 @@ if [ "$VERBOSE" = "yes" ]; then echo fi -if [ ! -d "$TEST_DIR" ]; then +if [[ ! -d "$TEST_DIR" ]]; then mkdir -p "$TEST_DIR" fi -if [ ! -d "$SRC_DIR" ]; then +if [[ ! -d "$SRC_DIR" ]]; then mkdir -p "$SRC_DIR" fi @@ -367,9 +367,9 @@ printf "%-16s" " " for TAG in $SRC_TAGS; do src_set_vars "$TAG" - if [ "$TAG" = "installed" ]; then + if [[ "$TAG" = "installed" ]]; then ZFS_VERSION=$(modinfo zfs | awk '/version:/ { print $2; exit }') - if [ -n "$ZFS_VERSION" ]; then + if [[ -n "$ZFS_VERSION" ]]; then printf "%-16s" "$ZFS_VERSION" else fail "ZFS is not installed" @@ -388,21 +388,21 @@ printf "%-16s" "Clone ZFS" for TAG in $SRC_TAGS; do src_set_vars "$TAG" - if [ -d "$ZFS_DIR" ]; then + if [[ -d "$ZFS_DIR" ]]; then skip_nonewline - elif [ "$ZFS_TAG" = "installed" ]; then + elif [[ "$ZFS_TAG" = "installed" ]]; then skip_nonewline else cd "$SRC_DIR" || fail "Failed 'cd $SRC_DIR'" - if [ ! -d "$SRC_DIR_ZFS" ]; then + if [[ ! -d "$SRC_DIR_ZFS" ]]; then mkdir -p "$SRC_DIR_ZFS" fi git archive --format=tar --prefix="$ZFS_TAG/ $ZFS_TAG" \ -o "$SRC_DIR_ZFS/$ZFS_TAG.tar" &>/dev/null || \ rm "$SRC_DIR_ZFS/$ZFS_TAG.tar" - if [ -s "$SRC_DIR_ZFS/$ZFS_TAG.tar" ]; then + if [[ -s "$SRC_DIR_ZFS/$ZFS_TAG.tar" ]]; then tar -xf "$SRC_DIR_ZFS/$ZFS_TAG.tar" -C "$SRC_DIR_ZFS" rm "$SRC_DIR_ZFS/$ZFS_TAG.tar" echo -n -e "${COLOR_GREEN}Local${COLOR_RESET}\t\t" @@ -422,9 +422,9 @@ printf "%-16s" "Build ZFS" for TAG in $SRC_TAGS; do src_set_vars "$TAG" - if [ -f "$ZFS_DIR/module/zfs/zfs.ko" ]; then + if [[ -f "$ZFS_DIR/module/zfs/zfs.ko" ]]; then skip_nonewline - elif [ "$ZFS_TAG" = "installed" ]; then + elif [[ "$ZFS_TAG" = "installed" ]]; then skip_nonewline else cd "$ZFS_DIR" || fail "Failed 'cd $ZFS_DIR'" @@ -454,15 +454,15 @@ for TAG in $POOL_TAGS; do mkdir -p "$POOL_DIR_PRISTINE" # Use the existing compressed image if available. - if [ -f "$POOL_BZIP" ]; then + if [[ -f "$POOL_BZIP" ]]; then tar -xjf "$POOL_BZIP" -C "$POOL_DIR_PRISTINE" \ --strip-components=1 || \ fail "Failed 'tar -xjf $POOL_BZIP" # Use the installed version to create the pool. - elif [ "$TAG" = "installed" ]; then + elif [[ "$TAG" = "installed" ]]; then pool_create "$TAG" # A source build is available to create the pool. - elif [ -d "$POOL_DIR_SRC" ]; then + elif [[ -d "$POOL_DIR_SRC" ]]; then pool_create "$TAG" else SKIP=1 @@ -471,13 +471,13 @@ for TAG in $POOL_TAGS; do # Verify 'zpool import' works for all listed source versions. for SRC_TAG in $SRC_TAGS; do - if [ "$SKIP" -eq 1 ]; then + if [[ "$SKIP" -eq 1 ]]; then skip_nonewline continue fi src_set_vars "$SRC_TAG" - if [ "$SRC_TAG" != "installed" ]; then + if [[ "$SRC_TAG" != "installed" ]]; then cd "$ZFS_DIR" || fail "Failed 'cd $ZFS_DIR'" fi $ZFS_SH zfs="spa_config_path=$POOL_DIR_COPY" @@ -505,7 +505,7 @@ for TAG in $POOL_TAGS; do printf "\n" done -if [ "$KEEP" = "no" ]; then +if [[ "$KEEP" = "no" ]]; then rm -Rf "$TEST_DIR" fi diff --git a/scripts/zloop.sh b/scripts/zloop.sh index ade2c84c55..83160c34ab 100755 --- a/scripts/zloop.sh +++ b/scripts/zloop.sh @@ -23,7 +23,7 @@ BASE_DIR=${0%/*} SCRIPT_COMMON=common.sh -if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then +if [[ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]]; then . "${BASE_DIR}/${SCRIPT_COMMON}" else echo "Missing helper script ${SCRIPT_COMMON}" && exit 1