Bash:アルファベット文字が最初に発生した後に変数を分割する

Bash:アルファベット文字が最初に発生した後に変数を分割する

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"必要に応じて単一の変数に割り当てることができます。

おすすめ記事