删除其他前导斜杠(如果存在)

时间:2013-06-28 15:29:41

标签: linux bash

我正在编写一个脚本,其中我有一个用于输出数据的默认目录,或者用户可以指定目录。问题是,我不知道如何雄辩地做到这一点。这就是我所拥有的:

#!/bin/bash

OUTPUT="$1"

DEFAULT_DIR=/Default/Dir/For/Me

if [ -z "$OUTPUT" ] 
then
   OUTPUT=.${DEFAULT_DIR}
else
   OUTPUT=""${OUTPUT_DIR}""${DEFAULT_DIR}""
fi

echo "$OUTPUT"
  • 如果我执行此操作./script /,我会//Default/Dir/For/Me

  • 如果我执行此操作./script /home,我会/home/Default/Dir/For/Me

  • 如果我执行此操作./script /home/,我会/home//Default/Dir/For/Me

有没有办法让这个漂亮并正确处理第一个场景?显然,第一个场景不起作用,因为目录//不存在。

2 个答案:

答案 0 :(得分:3)

(只是从评论中说清楚)

我建议管道tr -s "/"以便删除重复的斜杠:

$ echo "/home//Default/Dir/For/Me" | tr -s "/"
/home/Default/Dir/For/Me
$ echo "/home//Default/Dir/For/M//////////e" | tr -s "/"
/home/Default/Dir/For/M/e

答案 1 :(得分:2)

这是另一种解决方案,无需分叉另一个流程:

DEFAULT_DIR=${DEFAULT_DIR//\/\///}

用字符串中的//替换/的所有匹配项。