From ea37c09399e8699df86102aeb8cbcba3ad5efe2f Mon Sep 17 00:00:00 2001 From: Wei Dai Date: Thu, 12 Jul 2012 22:36:15 -0700 Subject: [PATCH] Pass `rmdir' options to `mkdir'. Improve `quote'. [gh-1] --- test | 7 ++++--- undo | 13 +++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/test b/test index 68b1f5f..86a87ee 100755 --- a/test +++ b/test @@ -59,9 +59,10 @@ EOS test_rmdir() { cd "$SHUNIT_TMPDIR" assertIsReverse < mkdir dir - rmdir "d i r" -> mkdir d\\ i\\ r - rmdir a b c -> mkdir a b c + rmdir dir -> mkdir dir + rmdir "d i r" -> mkdir d\\ i\\ r + rmdir a b c -> mkdir a b c + rmdir -p dir/a/b -> mkdir -p dir/a/b EOS } diff --git a/undo b/undo index e9141ee..e4da181 100755 --- a/undo +++ b/undo @@ -53,10 +53,15 @@ command="$1" && shift # Helpers # ======= -# Shell quote an argument. -# Synopsis: quote argument +# Shell quote arguments. +# Synopsis: quote argument... quote() { - printf '%s\n' "$1" | sed 's/\([|&;<>()$`\\"'"'"' *?#~=%\[]\)/\\\1/g' + while [ "$1" ]; do + printf %s "$1" | sed 's/\([|&;<>()$`\\"'"'"' *?#~=%\[]\)/\\\1/g' + [ "$2" ] && printf ' ' + shift + done + printf '\n' } # Print messages to STDERR and exit with given exit code. @@ -165,7 +170,7 @@ cmd mkdir && \ cmd rmdir && \ reverse_cmd() { - format_args 'mkdir %s' -- "$@" + printf %s "mkdir $(quote "$@")" } cmd tar && \