我有一台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