[arch-projects] [devtools] [PATCH] Use double brackets everywhere

Lukas Fleischer archlinux at cryptocrack.de
Tue Nov 22 10:33:26 EST 2011


We already fixed a couple of these in previous patches - this one should
replace all remaining uses of single brackets ("[") by double brackets.
Also, use arithmetic evaluation instead of conditional expressions where
appropriate and make use of "-z" and "-n" instead of comparing variables
to empty strings.

Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
---
I created this patch semi-automatically. archbuild and commitpkg still
work for me. You might want to review/test this in detail before
pushing, though. There might be careless mistakes...

 archco.in       |    2 +-
 archrm.in       |    2 +-
 commitpkg.in    |   38 +++++++++++++++++-----------------
 find-libdeps.in |    4 +-
 lddd.in         |    4 +-
 mkarchroot.in   |   60 +++++++++++++++++++++++++++---------------------------
 rebuildpkgs.in  |   10 ++++----
 7 files changed, 60 insertions(+), 60 deletions(-)

diff --git a/archco.in b/archco.in
index be026b1..5d34209 100644
--- a/archco.in
+++ b/archco.in
@@ -4,7 +4,7 @@ m4_include(lib/common.sh)
 
 scriptname=${0##*/}
 
-if [ "$1" = '' ]; then
+if [[ -z $1 ]]; then
 	echo 'Usage: '$scriptname' <package name>...'
 	exit 1
 fi
diff --git a/archrm.in b/archrm.in
index a4830ee..7c7139b 100644
--- a/archrm.in
+++ b/archrm.in
@@ -2,7 +2,7 @@
 
 m4_include(lib/common.sh)
 
-if [ "$1" = '' ]; then
+if [[ -z $1 ]]; then
 	echo 'Usage: archrm <path to checkout>'
 	exit 1
 fi
diff --git a/commitpkg.in b/commitpkg.in
index bc18d83..f1f9b4a 100644
--- a/commitpkg.in
+++ b/commitpkg.in
@@ -5,7 +5,7 @@ m4_include(lib/common.sh)
 getpkgfile() {
 	if [[ ${#} -ne 1 ]]; then
 		die 'No canonical package found!'
-	elif [ ! -f "${1}" ]; then
+	elif [[ ! -f $1 ]]; then
 		die "Package ${1} not found!"
 	fi
 
@@ -13,20 +13,20 @@ getpkgfile() {
 }
 
 # Source makepkg.conf; fail if it is not found
-if [ -r '/etc/makepkg.conf' ]; then
+if [[ -r '/etc/makepkg.conf' ]]; then
 	source '/etc/makepkg.conf'
 else
 	die '/etc/makepkg.conf not found!'
 fi
 
 # Source user-specific makepkg.conf overrides
-if [ -r ~/.makepkg.conf ]; then
+if [[ -r ~/.makepkg.conf ]]; then
 	. ~/.makepkg.conf
 fi
 
 cmd=${0##*/}
 
-if [ ! -f PKGBUILD ]; then
+if [[ ! -f PKGBUILD ]]; then
 	die 'No PKGBUILD file'
 fi
 
@@ -35,7 +35,7 @@ pkgbase=${pkgbase:-$pkgname}
 
 case "$cmd" in
 	commitpkg)
-		if [ $# -eq 0 ]; then
+		if (( $# == 0 )); then
 			die 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]'
 		fi
 		repo="$1"
@@ -89,25 +89,25 @@ while getopts ':l:a:' flag; do
 done
 shift $(( OPTIND - 1 ))
 
-if [ -n "$(svn status -q)" ]; then
+if [[ -n $(svn status -q) ]]; then
 	msgtemplate="upgpkg: $pkgbase $(get_full_version)"$'\n\n'
-	if [ -n "$1" ]; then
+	if [[ -n $1 ]]; then
 		stat_busy 'Committing changes to trunk'
 		svn commit -q -m "${msgtemplate}${1}" || die
 		stat_done
 	else
 		msgfile="$(mktemp)"
 		echo "$msgtemplate" > "$msgfile"
-		if [ -n "$SVN_EDITOR" ]; then
+		if [[ -n $SVN_EDITOR ]]; then
 			$SVN_EDITOR "$msgfile"
-		elif [ -n "$VISUAL" ]; then
+		elif [[ -n $VISUAL ]]; then
 			$VISUAL "$msgfile"
-		elif [ -n "$EDITOR" ]; then
+		elif [[ -n $EDITOR ]]; then
 			$EDITOR "$msgfile"
 		else
 			vi "$msgfile"
 		fi
-		[ -s "$msgfile" ] || die
+		[[ -s $msgfile ]] || die
 		stat_busy 'Committing changes to trunk'
 		svn commit -q -F "$msgfile" || die
 		unlink "$msgfile"
@@ -118,7 +118,7 @@ fi
 declare -a uploads
 
 for _arch in ${arch[@]}; do
-	if [ -n "$commit_arch" ] && [ "${_arch}" != "$commit_arch" ]; then
+	if [[ -n $commit_arch && ${_arch} != $commit_arch ]]; then
 		warning "skipping ${_arch}"
 		continue
 	fi
@@ -128,9 +128,9 @@ for _arch in ${arch[@]}; do
 		pkgfile=$(getpkgfile "$_pkgname-$fullver-${_arch}".pkg.tar.?z 2>/dev/null)
 		pkgdestfile=$(getpkgfile "$PKGDEST/$_pkgname-$fullver-${_arch}".pkg.tar.?z 2>/dev/null)
 
-		if [ -f "$pkgfile" ]; then
+		if [[ -f $pkgfile ]]; then
 			pkgfile="./$pkgfile"
-		elif [ -f "$pkgdestfile" ]; then
+		elif [[ -f $pkgdestfile ]]; then
 			pkgfile="$pkgdestfile"
 		else
 			warning "skipping ${_arch}"
@@ -139,14 +139,14 @@ for _arch in ${arch[@]}; do
 		uploads+=("$pkgfile")
 
 		sigfile="${pkgfile}.sig"
-		if [[ $SIGNPKG == 'y' ]] && [ ! -f "${sigfile}" ]; then
+		if [[ $SIGNPKG == 'y' && ! -f $sigfile ]]; then
 			msg "Signing package ${pkgfile}..."
 			if [[ -n $GPGKEY ]]; then
 				SIGNWITHKEY="-u ${GPGKEY}"
 			fi
 			gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || die
 		fi
-		if [ -f "${sigfile}" ]; then
+		if [[ -f $sigfile ]]; then
 			if ! gpg --verify "$sigfile" >/dev/null 2>&1; then
 				die "Signature ${pkgfile}.sig is incorrect!"
 			fi
@@ -168,8 +168,8 @@ if [[ ${#uploads[*]} -gt 0 ]]; then
 	rsync "${rsyncopts[@]}" "${uploads[@]}" "$server:staging/$repo/" || die
 fi
 
-if [ "${arch[*]}" == 'any' ]; then
-	if [ -d ../repos/$repo-i686 -a -d ../repos/$repo-x86_64 ]; then
+if [[ "${arch[*]}" == 'any' ]]; then
+	if [[ -d ../repos/$repo-i686 && -d ../repos/$repo-x86_64 ]]; then
 		pushd ../repos/ >/dev/null
 		stat_busy "Removing $repo-i686 and $repo-x86_64"
 		svn rm -q $repo-i686
@@ -179,7 +179,7 @@ if [ "${arch[*]}" == 'any' ]; then
 		popd >/dev/null
 	fi
 else
-	if [ -d ../repos/$repo-any ]; then
+	if [[ -d ../repos/$repo-any ]]; then
 		pushd ../repos/ >/dev/null
 		stat_busy "Removing $repo-any"
 		svn rm -q $repo-any
diff --git a/find-libdeps.in b/find-libdeps.in
index efd9bf3..b7c3619 100644
--- a/find-libdeps.in
+++ b/find-libdeps.in
@@ -68,12 +68,12 @@ find . -type f $find_args | while read filename; do
 
 	# get architecture of the file; if soarch is empty it's not an ELF binary
 	soarch=$(LC_ALL=C readelf -h "$filename" 2>/dev/null | sed -n 's/.*Class.*ELF\(32\|64\)/\1/p')
-	[ -n "$soarch" ] || continue
+	[[ -n $soarch ]] || continue
 
 	if [[ $script_mode = "provides" ]]; then
 		# get the string binaries link to: libfoo.so.1.2 -> libfoo.so.1
 		sofile=$(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -n 's/.*Library soname: \[\(.*\)\].*/\1/p')
-		[ -z "$sofile" ] && sofile="${filename##*/}"
+		[[ -z $sofile" ]] && sofile="${filename##*/}"
 		process_sofile
 	elif [[ $script_mode = "deps" ]]; then
 		# process all libraries needed by the binary
diff --git a/lddd.in b/lddd.in
index ae6c2b5..61608a4 100644
--- a/lddd.in
+++ b/lddd.in
@@ -27,9 +27,9 @@ for tree in $PATH $libdirs $extras; do
 	-name '*.mcopclass' ! -name '*.mcoptype')
 	IFS=$ifs
 	for i in $files; do
-		if [ $(file $i | grep -c 'ELF') -ne 0 ]; then
+		if (( $(file $i | grep -c 'ELF') != 0 )); then
 			#  Is an ELF binary.
-			if [ $(ldd $i 2>/dev/null | grep -c 'not found') -ne 0 ]; then
+			if (( $(ldd $i 2>/dev/null | grep -c 'not found') != 0 )); then
 				#  Missing lib.
 				echo "$i:" >> $TEMPDIR/raw.txt
 				ldd $i 2>/dev/null | grep 'not found' >> $TEMPDIR/raw.txt
diff --git a/mkarchroot.in b/mkarchroot.in
index c35ba5b..86631a1 100644
--- a/mkarchroot.in
+++ b/mkarchroot.in
@@ -47,34 +47,34 @@ while getopts 'r:ufnhC:M:c:' arg; do
 	esac
 done
 
-if [ "$EUID" != '0' ]; then
+if (( $EUID != 0 )); then
 	die 'This script must be run as root.'
 fi
 
 shift $(($OPTIND - 1))
 
-if [ "$RUN" = '' -a $# -lt 2 ]; then
+if [[ -z $RUN ]] && (( $# < 2 )); then
 	die 'You must specify a directory and one or more packages.'
-elif [ $# -lt 1 ]; then
+elif (( $# < 1 )); then
 	die 'You must specify a directory.'
 fi
 
 working_dir="$(readlink -f ${1})"
 shift 1
 
-[ "${working_dir}" = '' ] && die 'Please specify a working directory.'
+[[ -z $working_dir ]] && die 'Please specify a working directory.'
 
-if [ -z "$cache_dir" ]; then
+if [[ -z $cache_dir ]]; then
 	cache_conf=${working_dir}/etc/pacman.conf
-	[ ! -f $cache_conf ] && cache_conf=${pac_conf:-/etc/pacman.conf}
+	[[ ! -f $cache_conf ]] && cache_conf=${pac_conf:-/etc/pacman.conf}
 	cache_dir=$( (grep -m 1 '^CacheDir' $cache_conf || echo 'CacheDir = /var/cache/pacman/pkg') | sed 's/CacheDir\s*=\s*//')
 	unset cache_conf
 fi
 
-if [ -f /etc/pacman.d/mirrorlist ]; then
+if [[ -f /etc/pacman.d/mirrorlist ]]; then
 	host_mirror=$(pacman -Sddp extra/devtools 2>/dev/null | sed -E 's#(.*/)extra/os/.*#\1$repo/os/$arch#')
 fi
-if [ -z "${host_mirror}" ]; then
+if [[ -z $host_mirror ]]; then
 	host_mirror='http://mirrors.kernel.org/archlinux/$repo/os/$arch'
 fi
 if echo "${host_mirror}" | grep -q 'file://'; then
@@ -83,13 +83,13 @@ fi
 
 # {{{ functions
 chroot_mount() {
-	[ -e "${working_dir}/sys" ] || mkdir "${working_dir}/sys"
+	[[ -e "${working_dir}/sys" ]] || mkdir "${working_dir}/sys"
 	mount -t sysfs sysfs "${working_dir}/sys"
 
-	[ -e "${working_dir}/proc" ] || mkdir "${working_dir}/proc"
+	[[ -e "${working_dir}/proc" ]] || mkdir "${working_dir}/proc"
 	mount -t proc proc "${working_dir}/proc"
 
-	[ -e "${working_dir}/dev" ] || mkdir "${working_dir}/dev"
+	[[ -e "${working_dir}/dev" ]] || mkdir "${working_dir}/dev"
 	mount -t tmpfs dev "${working_dir}/dev" -o mode=0755,size=10M,nosuid
 	mknod -m 666 "${working_dir}/dev/null" c 1 3
 	mknod -m 666 "${working_dir}/dev/zero" c 1 5
@@ -105,19 +105,19 @@ chroot_mount() {
 	ln -s /proc/self/fd/1 "${working_dir}/dev/stdout"
 	ln -s /proc/self/fd/2 "${working_dir}/dev/stderr"
 
-	[ -e "${working_dir}/dev/shm" ] || mkdir "${working_dir}/dev/shm"
+	[[ -e "${working_dir}/dev/shm" ]] || mkdir "${working_dir}/dev/shm"
 	mount -t tmpfs shm "${working_dir}/dev/shm" -o nodev,nosuid,size=128M
 
-	[ -e "${working_dir}/dev/pts" ] || mkdir "${working_dir}/dev/pts"
+	[[ -e "${working_dir}/dev/pts" ]] || mkdir "${working_dir}/dev/pts"
 	mount -t devpts devpts "${working_dir}/dev/pts" -o newinstance,ptmxmode=666
 	ln -s pts/ptmx "${working_dir}/dev/ptmx"
 
-	[ -e "${cache_dir}" ] || mkdir -p "${cache_dir}"
-	[ -e "${working_dir}/${cache_dir}" ] || mkdir -p "${working_dir}/${cache_dir}"
+	[[ -e $cache_dir ]] || mkdir -p "${cache_dir}"
+	[[ -e "${working_dir}/${cache_dir}" ]] || mkdir -p "${working_dir}/${cache_dir}"
 	mount -o bind "${cache_dir}" "${working_dir}/${cache_dir}"
 
-	if [ -n "${host_mirror_path}" ]; then
-		[ -e "${working_dir}/${host_mirror_path}" ] || mkdir -p "${working_dir}/${host_mirror_path}"
+	if [[ -n $host_mirror_path ]]; then
+		[[ -e "${working_dir}/${host_mirror_path}" ]] || mkdir -p "${working_dir}/${host_mirror_path}"
 		mount -o bind "${host_mirror_path}" "${working_dir}/${host_mirror_path}"
 		mount -o remount,ro,bind "${host_mirror_path}" "${working_dir}/${host_mirror_path}"
 	fi
@@ -130,11 +130,11 @@ copy_hostconf () {
 	cp /etc/resolv.conf "${working_dir}/etc/resolv.conf"
 	echo "Server = ${host_mirror}" > ${working_dir}/etc/pacman.d/mirrorlist
 
-	if [ "$pac_conf" != "" -a "$NOCOPY" = "n" ]; then
+	if [[ -n $pac_conf && $NOCOPY = 'n' ]]; then
 		cp ${pac_conf} ${working_dir}/etc/pacman.conf
 	fi
 
-	if [ "$makepkg_conf" != "" -a "$NOCOPY" = "n" ]; then
+	if [[ -n $makepkg_conf && $NOCOPY = 'n' ]]; then
 		cp ${makepkg_conf} ${working_dir}/etc/makepkg.conf
 	fi
 }
@@ -146,12 +146,12 @@ chroot_umount () {
 	umount "${working_dir}/dev/shm"
 	umount "${working_dir}/dev"
 	umount "${working_dir}/${cache_dir}"
-	[ -n "${host_mirror_path}" ] && umount "${working_dir}/${host_mirror_path}"
+	[[ -n $host_mirror_path ]] && umount "${working_dir}/${host_mirror_path}"
 }
 
 chroot_lock () {
 	# Only reopen the FD if it wasn't handed to us
-	if [ "$(readlink -f /dev/fd/9)" != "${working_dir}.lock" ]; then
+	if [[ $(readlink -f /dev/fd/9) != "${working_dir}.lock" ]]; then
 	  exec 9>"${working_dir}.lock"
 	fi
 
@@ -165,10 +165,10 @@ chroot_lock () {
 # }}}
 
 umask 0022
-if [ "$RUN" != "" ]; then
+if [[ -n $RUN ]]; then
 	# run chroot {{{
 	#Sanity check
-	if [ ! -f "${working_dir}/.arch-chroot" ]; then
+	if [[ ! -f "${working_dir}/.arch-chroot" ]]; then
 		die "'${working_dir}' does not appear to be a Arch chroot."
 	fi
 
@@ -181,7 +181,7 @@ if [ "$RUN" != "" ]; then
 	# }}}
 else
 	# {{{ build chroot
-	if [ -e "${working_dir}" -a "${FORCE}" = "n" ]; then
+	if [[ -e $working_dir && $FORCE = 'n' ]]; then
 		die "Working directory '${working_dir}' already exists - try using -f"
 	fi
 
@@ -196,13 +196,13 @@ else
 	chroot_mount
 
 	pacargs="--noconfirm --root=${working_dir} --cachedir=${cache_dir}"
-	if [ "$pac_conf" != "" ]; then
+	if [[ -n $pac_conf ]]; then
 		pacargs="$pacargs --config=${pac_conf}"
 	fi
 
-	if [ $# -ne 0 ]; then
+	if (( $# != 0 )); then
 		op='-Sy'
-		if [ "$FORCE" = "y" ]; then
+		if [[ $FORCE = 'y' ]]; then
 			op="${op}f"
 		fi
 		if ! pacman ${op} ${pacargs} $@; then
@@ -210,18 +210,18 @@ else
 		fi
 	fi
 
-	if [ -d "${working_dir}/lib/modules" ]; then
+	if [[ -d "${working_dir}/lib/modules" ]]; then
 		ldconfig -r "${working_dir}"
 	fi
 
-	if [ -e "${working_dir}/etc/locale.gen" ]; then
+	if [[ -e "${working_dir}/etc/locale.gen" ]]; then
 		sed -i 's@^#\(en_US\|de_DE\)\(\.UTF-8\)@\1\2@' "${working_dir}/etc/locale.gen"
 		chroot "${working_dir}" /usr/sbin/locale-gen
 	fi
 
 	copy_hostconf
 
-	if [ ! -e "${working_dir}/.arch-chroot" ]; then
+	if [[ ! -e "${working_dir}/.arch-chroot" ]]; then
 		date +%s > "${working_dir}/.arch-chroot"
 	fi
 	# }}}
diff --git a/rebuildpkgs.in b/rebuildpkgs.in
index d8fbdbe..f7b1612 100644
--- a/rebuildpkgs.in
+++ b/rebuildpkgs.in
@@ -11,14 +11,14 @@
 
 m4_include(lib/common.sh)
 
-if [ $# -le 1 ]; then
+if (( $# <= 1 )); then
 	echo "usage: $(basename $0) <chrootdir> <packages to rebuild>"
 	echo "  example: $(basename $0) ~/chroot readline bash foo bar baz"
 	exit 1
 fi
 
 # Source makepkg.conf; fail if it is not found
-if [ -r '/etc/makepkg.conf' ]; then
+if [[ -r '/etc/makepkg.conf' ]]; then
 	source '/etc/makepkg.conf'
 else
 	die '/etc/makepkg.conf not found!'
@@ -63,7 +63,7 @@ for pkg in $pkgs; do
 
 	msg2 "Building '$pkg'"
 	/usr/bin/svn update "$pkg"
-	if [ ! -d "$pkg/trunk" ]; then
+	if [[ ! -d "$pkg/trunk" ]]; then
 		FAILED="$FAILED $pkg"
 		warning "$pkg does not exist in SVN"
 		continue
@@ -77,7 +77,7 @@ for pkg in $pkgs; do
 		error "$pkg Failed!"
 	else
 		pkgfile=$(pkg_from_pkgbuild)
-		if [ -e "$pkgfile" ]; then
+		if [[ -e $pkgfile ]]; then
 			msg2 "$pkg Complete"
 		else
 			FAILED="$FAILED $pkg"
@@ -87,7 +87,7 @@ for pkg in $pkgs; do
 done
 
 cd "$REBUILD_ROOT"
-if [ "$FAILED" != "" ]; then
+if [[ -n $FAILED ]]; then
 	msg 'Packages failed:'
 	for pkg in $FAILED; do
 		msg2 "$pkg"
-- 
1.7.7.4



More information about the arch-projects mailing list