【问题标题】:Shell Script loopShell 脚本循环
【发布时间】:2017-11-13 07:20:50
【问题描述】:

我正在尝试将以下代码放入一个循环中,在循环中一遍又一遍地运行,同时将 ./rundate????????.sh 增加 1 天

例如: 首先它运行“rundate20170101.sh” 其次它运行“rundate20170102.sh” .. .. .. .. 第十五次运行“rundate20170115.sh”

尝试让循环在 15 天后结束,然后转到下一个问题“你要运行补丁吗”

任何帮助将不胜感激。

谢谢!

yn() { echo -n "$1: "
       while read  -sN1 x ; do
           x=${x,}
           case $x in [yn]) break ;; *) : ;; esac
       done
       echo $x
       [ $x = y ] ; }

yn "Do you want to install the new update? [Y/n]" || exit
./install.sh
echo "Pick a rundate file: "
select x in ./rundate????????.sh ; do $x ; break ; done
yn "Would you like to run the patch? [Y/n]" || exit
./patch.sh

只是为了澄清我试图让这个脚本从头到尾运行。然后循环回到起点,但将 .rundate2070101.sh 更改为 rundate20170102.sh 但在第一个循环后仍会询问其他问题。

如果这可以更好地用 perl 编写,我会喜欢一个例子!

【问题讨论】:

标签: bash perl shell loops sh


【解决方案1】:

例如,您可以在循环中使用正则表达式:

select x in (\.\/rundate)[0-9]+\.sh ; do $x ; break ; done

希望对你有帮助。

【讨论】:

  • 感谢您的建议。我试图让脚本循环运行,但每次运行时都会增加 rudate{date}.sh 以增加一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-05-17
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多