当我第二次运行它时,从特定的行启动bash脚本

时间:2018-10-05 09:40:34

标签: linux bash scripting

当我第二次运行bash脚本时,是否可以使用它来使bash脚本从特定行开始。

    #!/bin/bash
#installed jq by using sudo apt-get install jq
# return indices and os,process
a=$(curl -XGET 'http://localhost:9200/_nodes/node01/stats/os,process?pretty=1')

#return just jvm
b=$(curl -XGET 'http://localhost:9200/_nodes/node01/stats/jvm?pretty=1')
c=$(curl -XGET 'http://localhost:9200/_nodes/node01/stats/indices?pretty=1')

d=$(curl -XGET 'http://localhost:9200/_nodes/node01/stats/thread_pool?pretty=1')

e=$(curl -XGET 'http://localhost:9200/_cluster/stats?pretty=1')

f=$(curl -XGET 'http://localhost:9200/_cat/nodes?v&h=uptime')
uptime=$(echo $f | cut -d' ' -f 2)
echo $uptime
echo $e >"parameters4.json"

echo $d > "parameters3.json"


echo $c > "parameters2.json"

echo $b

#uptime=$(cat servrtime.txt | grep  uptime)

host=$(hostname -I)
echo $host

当我第二次运行它时必须从行 host = $(hostname -I)开始,有什么可以做的吗?

2 个答案:

答案 0 :(得分:4)

个人而言,一次执行命令后,我不会太复杂,也不会触摸文件系统上某个位置的文件。

if [[ ! -f /some/file ]]; then
  # your commands that should be executed only once
  touch /some/file
fi

# the rest of the script

请确保您将文件触摸到不会意外删除的位置。

答案 1 :(得分:0)

另一种简单的方法是通过使用awk或sed从您想运行的命令中解析文件。

假设您要在此行echo $uptime之后运行每个命令

awk方法

awk '/\$uptime/{y=1;next}y' filename.sh | bash

sed方法

sed '1,/\$uptime/d' filename.sh | bash

这些将在找到提到的字符串之后开始运行所有行。

注意:这将排除包含搜索字符串的行,因此,如果要从第n行开始运行所有行,则可以从n-1行传递搜索字符串。