我制作了一个 bash 命令,该命令生成一个用于重新启动服务器上所有 Weblogic (8,9,10) 实例的行。该脚本运行良好,但我需要一个建议以使其更好地使用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 命令时,它都会引发“变量语法”错误。
cd $(dirname '/domain_directory_path/app_name')
如何将 cd 目录名合并到我的 bash 命令中?
请让我知道我是否可以做更多的改进
关于我的脚本的一些信息
1) 以下部分列出了运行的 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 domain 部分是必需的,因为所有域名都有 domain 作为后缀
为了解决您的问题,我编写了一个非常基本的脚本:
pwd 的输出很好
path 的输出是 dirname
因此,当您尝试时,
cd $(dirname '/domain_directory_path/app_name')
它会尝试转到 cd dirname ... 显然不存在正如我从一个类似情况的博客中发现的那样:
因此,我认为
cd $($(dirname '/domain_directory_path/app_name'))
应该可以解决您的问题我尝试了以下脚本:
输出是
还有一件事
做直接
cd $($(dirname '/domain_directory_path/app_name'))
没用因此,我想您首先需要提取某个变量的路径(我的脚本中的路径),然后 cd 到它,就像我在脚本中所做的那样
问候
安瑞特