crontabの1行を含む変数があります
たとえば、
0 22 * * 1-5 echo hello
2つの変数に分割したいのですが、1つの変数はジョブの期間を数字またはアスタリスクで表し、他の変数はジョブの実行時に実行するコマンドを表します。
そのため、アルファベット文字が最初に表示されるときに文字列を分割する方法を見つける必要がありますが、どうすればよいかわかりません。
ベストアンサー1
これはまさにあなたが探しているものではありませんが、あなたのユースケースに適しているはずです。行を変数で定義されているように、スペースとタブで区切られた6つの変数として読み込みますIFS
。
変更されたcrontabエントリの例:
$ line='0 22 * * 1-5 echo "foo bar baz"'
$ IFS=$'\t ' read -r a b c d e cmd <<<"$line"
$ echo "$a $b $c $d $e"
0 22 * * 1-5
$ echo "$cmd"
echo "foo bar baz"
最初の5つのフィールドの複数のスペース(またはタブ)は単一のスペース文字に圧縮されますが、コマンドのスペース/タブは変更されません。"$a $b $c $d $e"
必要に応じて単一の変数に割り当てることができます。