Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何在unix中使用expr从存储在变量中的文件的绝对路径名提取父目录?_Shell_Unix_Scripting - Fatal编程技术网

Shell 如何在unix中使用expr从存储在变量中的文件的绝对路径名提取父目录?

Shell 如何在unix中使用expr从存储在变量中的文件的绝对路径名提取父目录?,shell,unix,scripting,Shell,Unix,Scripting,例如,我有一条路径 x=/home/john/filename.txt 如何使用expr函数仅提取/home/john 编辑:您似乎正在寻找替代方案: $ x=/home/john/filename.txt $ echo ${x%/*} /home/john $ echo ${x:0:10} /home/john 编辑:OP似乎正在使用expr寻找解决方案。接受的解决方案在假定给定目录名长度的情况下工作。以下情况不符合该假设: $ x=/home/john/filename.txt $ ex

例如,我有一条路径

x=/home/john/filename.txt
如何使用
expr
函数仅提取
/home/john

编辑:您似乎正在寻找替代方案:

$ x=/home/john/filename.txt
$ echo ${x%/*}
/home/john
$ echo ${x:0:10}
/home/john
编辑:OP似乎正在使用
expr
寻找解决方案。接受的解决方案在假定给定目录名长度的情况下工作。以下情况不符合该假设:

$ x=/home/john/filename.txt
$ expr $x : '\(.*\)/.*'
/home/john
您可以使用:

编辑:您似乎正在寻找替代方案:

$ x=/home/john/filename.txt
$ echo ${x%/*}
/home/john
$ echo ${x:0:10}
/home/john
编辑:OP似乎正在使用
expr
寻找解决方案。接受的解决方案在假定给定目录名长度的情况下工作。以下情况不符合该假设:

$ x=/home/john/filename.txt
$ expr $x : '\(.*\)/.*'
/home/john

这是使用
expr
功能的替代方法

$ x=/home/john/filename.txt
$ expr $x : '\(.\{10\}\)'
/home/john
编辑:如果您的路径以
/home/name
开头,然后是不同长度的路径,请使用此模式:

$ expr $x : '\([/][a-z]*[/][a-z]*\)'
/home/john

这是使用
expr
功能的替代方法

$ x=/home/john/filename.txt
$ expr $x : '\(.\{10\}\)'
/home/john
编辑:如果您的路径以
/home/name
开头,然后是不同长度的路径,请使用此模式:

$ expr $x : '\([/][a-z]*[/][a-z]*\)'
/home/john

expr
计算表达式。它不执行子字符串操作。man expr包含一个用于子字符串操作的条目。但我不知道如何使用它。请给我发送一个片段,演示相同的
expr
表达式。它不执行子字符串操作。man expr包含一个用于子字符串操作的条目。但我不知道如何使用它。请给我发送一个代码片段,以演示该操作所需的相同目录。。。删除我的(facepalm)。哦,这是OP想要的目录。。。删除我的(facepalm)。请您解释一下这个片段的登录名好吗?
表示
expr
将找到由正则表达式定义的模式,这个表达式从begging开始并包含10个字符,或者您可以为mote info定义不同的模式。请您解释一下这个片段的登录名好吗?
表示
expr
将找到由正则表达式定义的模式,该表达式从begging开始,包含10个字符,或者您可以为mote info定义不同的模式