Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
Linux 使用bash脚本获取当前目录的第二个根文件夹 让我们考虑一下我的脚本当前的工作目录是_Linux_Bash_Shell - Fatal编程技术网

Linux 使用bash脚本获取当前目录的第二个根文件夹 让我们考虑一下我的脚本当前的工作目录是

Linux 使用bash脚本获取当前目录的第二个根文件夹 让我们考虑一下我的脚本当前的工作目录是,linux,bash,shell,Linux,Bash,Shell,/usr/src/app directory/upload/try.sh 在我的脚本中,我需要回显appdirectory,因为它是脚本的第二个根文件夹,还需要注意,我需要删除的不是字母数字字符串。我能够用下面的代码回显根文件夹upload #!/bin/bash echo "$(basename $(pwd))" 它回来了 $ ./try.sh upload 使用单个awk命令,可以执行以下操作: s='/Users/deanchristianarmada/Desktop/project

/usr/src/app directory/upload/try.sh

在我的脚本中,我需要回显
appdirectory
,因为它是脚本的第二个根文件夹,还需要注意,我需要删除的不是字母数字字符串。我能够用下面的代码回显根文件夹
upload

#!/bin/bash

echo "$(basename $(pwd))"
它回来了

$ ./try.sh
upload

使用单个
awk
命令,可以执行以下操作:

s='/Users/deanchristianarmada/Desktop/projects/infrastructure-playground/ci'
var=$(awk -F/ 'NF>1{p=$(NF-1); gsub(/[^[:alnum:]]+/, "", p); print p}' <<< "$PWD")
echo "$var"

使用单个
awk
命令,可以执行以下操作:

s='/Users/deanchristianarmada/Desktop/projects/infrastructure-playground/ci'
var=$(awk -F/ 'NF>1{p=$(NF-1); gsub(/[^[:alnum:]]+/, "", p); print p}' <<< "$PWD")
echo "$var"

awk
可能更容易:

var=$(awk -F'/' 'NF>2{print $(NF-1)}' <<<"$PWD" | sed 's/[^a-zA-Z0-9]//g')

var=$(awk-F'/''NF>2{print$(NF-1)}'
awk
可能更容易:

var=$(awk -F'/' 'NF>2{print $(NF-1)}' <<<"$PWD" | sed 's/[^a-zA-Z0-9]//g')

var=$(awk-F'/''NF>2{print$(NF-1)}'您的脚本的缺点是它不是动态的,如果目录不同,如
/Users/deanchristianarmada/Desktop/projects/infrastructure playway/ci/try,sh
,它就不会粘在
第二根文件夹上。您的代码不会响应
infrastructure playway
您脚本的缺点是它不是动态的如果目录不同,如
/Users/deanchristianarmada/Desktop/projects/infrastructure playway/ci/try,sh
,则namic将不会保留在
第二根文件夹中。很抱歉,您的代码不会回显
infrastructure playway
但如何将其变为变量?以及如何排除非字母数字字符?Le假设根文件夹的第二个是
app tri
,那么我需要存储到一个值为
apptri
的变量中,以删除非字母字符并将结果存储到变量中。@anubhava是的,它会。据我所知,这就是OP想要的。@anubhava如果
try.sh
位于
/Users/deanchristianar中mada/Desktop/projects/infrastructure Playway/ci
然后OP希望路径中的最后一个目录是
infrastructure Playway
(删除
-
)。很抱歉,但是如何将其转换为变量?以及如何排除非字母数字字符?假设根文件夹的第二个是
app tri
,那么我需要将值
apptri
更新到一个变量中,以删除非字母数字字符并将结果存储到一个变量中。@anubhava是的,会的。这就是OP想要的据我所知,ed。@anubhava如果
try.sh
位于
/Users/deanchristianarmada/Desktop/projects/infrastructure playde/ci
中,那么OP想要路径中的最后一个目录,即
infrastructure playde
(删除
-
后)。你使用“root”很奇怪。我猜你的意思是“父目录”。你的项目的根目录(目录树开始的地方)显然是
/usr/src/app directory
我的道歉,但是的,我是说父目录。你使用“根目录”很奇怪。我猜你真的是指“父目录”。你的项目的根目录(目录树开始的地方)显然是
/usr/src/app目录
我的道歉,但是的,我指的是父文件夹