首页 > 解决方案 > 在 csh 中,如何使用变量修饰符从“a/b/c/”生成“a/b”?

问题描述

当 x 包含最后包含 / 的目录名称时,如何删除最后一个路径,包括 csh 中的 / 模式?
这是一个例子。

% set x=a/b/c
% echo $x:h
a/b
% set x=a/b/c/
% echo $x:h
a/b/c

所以当x是“a/b/c/”时,我想做“a/b”。如何使用变量修饰符来做到这一点?(在 csh 中)

我也很好奇如何在 bash 中做到这一点。${x%/ } 将生成“a/b/c”,而 ${x%%/ } 将生成“a”。

ADD :当然我可以预处理输入文件以在末尾删除 / ,例如 sed -e '1,$s/\/$//g' file > file.1; \mv file.1 file' 但我很好奇是否可以使用变量修饰符。

标签: variablescshmodifier

解决方案


dirname(1)您可以通过以下任何方式捕获输出csh

$ dirname a/b/c
a/b
$ dirname a/b/c/
a/b

推荐阅读