我正在编写一个脚本,其中我有一个用于输出数据的默认目录,或者用户可以指定目录。问题是,我不知道如何雄辩地做到这一点。这就是我所拥有的:
#!/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
有没有办法让这个漂亮并正确处理第一个场景?显然,第一个场景不起作用,因为目录//
不存在。
答案 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//\/\///}
用字符串中的//
替换/
的所有匹配项。