无法用cd dirname cd到父目录

我做了一个bash命令,它可以生成一个用于重新启动服务器上的所有Weblogic(8,9,10)实例的单行命令。 该脚本运作良好,但我需要一个build议,使使用dirname概念更好

/usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print $2}' | sed 's/weblogic.policy//' | sed 's/security\///' | sort | sed 's/^/cd /' | sed 's/$/ ; cd .. ; \/recycle_script_directory_path\/recycle/ ;' | tr '\n' ' ' 

要重新启动Weblogic实例,需要从域目录内启动回收(/ recycle_script_directory_path / recycle /)脚本,因为回收脚本从域目录中的某些.ini文件中提取某些应用程序信息。

该脚本的以下部分会生成一行cd到应用程序的父目录,即域目录

 sed 's/$/ ; cd .. ; \/recycle_script_directory\/recycle/ ;' | tr '\n' ' ' 

我相信有一个更好的办法cd到父目录像CD dirname,但每次我运行下面的CD dirname命令,它会引发“variables语法”错误。

 cd $(dirname '/domain_directory_path/app_name') 

我如何在我的bash命令中joincd dirname?

请让我知道如果有更多的改进我可以做

关于我的脚本的一些信息

1)下面的部分列出了与完整path一起运行的weblogic实例

 /usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print $2}' | sed 's/weblogic.policy//' | sed 's/security\///' | sort 

2)由于所有的域名都以域名为后缀,所以需要grep域名部分

为了解决你的问题,我写了一个非常基本的脚本:

 #!/bin/bash cd /usr/local/share/pixmaps pwd sleep 5 path=(dirname '/usr/local/shar/pixmaps') echo $path sleep 5 

pwd的输出很好

path的输出是dirname

因此,当你尝试cd $(dirname '/domain_directory_path/app_name')它试图去cd dirname …这显然是不存在

正如我从一个类似情况的博客中发现的:

 $ cd $(dirname $(find / -name unknownfile.txt 2>/dev/null | head -n 1)) $ pwd /home/peter/status/2007/november 

因此,我认为cd $($(dirname '/domain_directory_path/app_name'))应该可以解决你的问题

我试了下面的脚本:

 #!/bin/bash cd /usr/local/share/pixmaps pwd sleep 5 path=($(dirname '/usr/local/share/pixmaps')) echo $path sleep 5 cd / pwd sleep 5 cd $path pwd 

和输出是

 /usr/local/share/pixmaps /usr/local/share / /usr/local/share 

还有一件事

直接执行cd $($(dirname '/domain_directory_path/app_name'))不起作用

因此,我想你首先需要提取一些variables的path(在我的脚本中的path),然后cd到它,就像我已经在我的脚本

问候

阿姆里特