如何创建一个多次调用自己的 bash 文件?



我有一台Linux机器。 我需要创建一个多次调用自己的 bash 文件,当满足某个条件时,执行一些操作并退出。

为此,我应该使用参数执行文件本身,例如:

./mybash -t 50

-t 代表我希望这个文件调用自己的时间,当 if 语句为真时,则:打印、等待和退出。

所以为了创建bash,我写了以下内容(目前不起作用(

#!/bin/bash
while getopts t: option
do
case "${option}"
in
t) TIMES=${OPTARG};;
esac
done

echo "this is the run number: $TIMES"
if [ $TIMES = 0 ]; then
#psudo here
echo "Hello"
wait 5 seconds
echo "Done"
else
sh ./myBash.bash -t ($TIMES - 1)
fi

这里似乎有什么问题?

  • 您期望脚本中有-t选项,但传递-n.
  • 您需要使用$((...))进行外壳算术。
  • 建议您在bash中使用[[ ... ]]而不是[ ... ]
  • 使用wait而不是sleep

您可以使用:

#!/usr/bin/env bash
while getopts t: option
do
case "${option}" in
t) TIMES=${OPTARG};;
esac
done

echo "this is the run number: $TIMES"
if [[ $TIMES -eq 0 ]]; then
#psudo here
echo "Hello"
sleep .1
echo "Done"
else
bash "$0" -t $((TIMES - 1))
fi

然后,您可以将脚本调用为:

bash myBash.bash -t 5

最新更新