【问题标题】:Shell scripting basic [closed]Shell脚本基本[关闭]
【发布时间】:2020-04-14 16:52:53
【问题描述】:

我是 shell 新手,需要帮助。我可以根据命令结果编写脚本的最简单方法是什么?

基本上我想检查实例的状态,如果它关闭就打开它,否则什么都不做

我有命令可以根据列表获取实例状态或 grep。

【问题讨论】:

  • 请更具体地表达您的意思。 “实例的状态”是正在运行的进程的状态吗?你用什么命令来获取状态?你在使用 bash 吗?

标签: linux shell scripting instance


【解决方案1】:

我将假设您在 Bash 中编写脚本,因为它是 Linux 上默认情况下最常见的 shell。

基本上你可以通过一个接一个地编写shell命令来编写脚本。您也可以编写 if-else 结构和循环,它们由特殊的 shell 命令构成。你可以在这里找到一个很好的语法总结:https://learnxinyminutes.com/docs/bash/

无论如何,你需要这些东西:

您可以将命令的输出加载到变量中,例如myVariable=$(ls -la)。即使myVariable=$(ls -la | grep "something") 也有效。稍后,您可以访问您的变量,例如$myVariable

如果你想读取的状态真的是程序的返回值而不是它的输出,你可以使用特殊的变量$?来保存最后执行的命令的返回值。您可以阅读特殊变量here

if-else 结构如下所示:

if [ "$Name" = "Daniya" ] || [ "$Name" = "Zach" ]
then
    echo "This will run if $Name is Daniya OR Zach."
fi

【讨论】:

  • 太棒了。谢谢,这会有所帮助。我应该能够用这个想法创造一些东西
【解决方案2】:

这是一个使用if-else 结构来验证Oracle 数据库状态的shell 脚本示例。如果它已关闭,则启动它,如果它正在运行则什么都不做:

check_stat='ps -ef|grep ${ORACLE_SID}|grep pmon|wc -l';
oracle_num='expr $check_stat'
if [ $oracle_num -lt 1 ]
then
    $ORACLE_HOME/bin/dbstart $ORACLE_HOME
else
    exit 0
fi

【讨论】:

  • 谢谢 Henique。
  • 嗨@Henique,这行不是 check_stat='ps -ef|grep ${ORACLE_SID}|grep pmon|wc -l';将整个命令作为字符串?至少对我有用吗?
猜你喜欢
  • 2020-01-04
  • 1970-01-01
  • 2022-11-29
  • 2015-07-09
  • 1970-01-01
  • 2013-02-10
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多