我做了一个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到它,就像我已经在我的脚本
问候
阿姆里特