我正在编写一个脚本,要求我找到现有目录的父目录
假设我有一个名为deep的目录,它位于/path/is/very/deep/
下。我需要找到“path”目录,但不能找到“/".
尝试了几个代码组合,但似乎我陷入了死锁。
感谢任何帮助。
这是我的代码无效。
if [ $dir_name != "/" || $path != "/" ]
then
path=`dirname $dir_name`
dir_name=`dirname $path`
echo $path
else
dir_name=$path
echo $dirname
fi
答案 0 :(得分:1)
这是解决问题的另一种方法:
通常,您需要做的就是在第二个/
字符之后(包括)删除字符串中的所有字符。 Linux终端具有允许您执行此操作的sed功能。
在Terminal/code
中尝试这一行:
echo '/path/is/very/deep' | sed -r 's:^(/[^/]*).*$:\1:'
您可以删除echo命令并根据需要将其分配给代码中的任何变量。 编辑:在sed中,反斜杠(/)也用作分隔符,您必须使用正斜杠(\)对其进行转义。由于某种原因,括号也会被转义。
答案 1 :(得分:0)
path="$( echo "${dir_name}" | sed -e 's|/[^/]*/\{0,1\}$||;s|^$|/|' )"
(posix compliance)并为/,/ bla,/ bla /,bla / bla,...
工作