エコーを使わずにUnix変数の値を部分文字列に切り捨てる方法はありますか?

エコーを使わずにUnix変数の値を部分文字列に切り捨てる方法はありますか?

エコーを使わずにUnix変数の値を部分文字列に切り捨てる方法はありますか?

たとえば、日付を含む変数があります。

pDate=2020-06-22

年と月を別々の変数に渡す必要があります。今年の四半期を決定するために、if elseステートメントでこれを使用します。

私はスクリプトを使用していません...実行コマンドステップであるDatastageでコーディングします。私は次のコマンドを使用しました。

pDate=2020-06-22; pMonth= echo $pDate | cut -c6-7

そのため、DS シーケンスジョブのコマンド実行フェーズ中、コマンド出力に月 "06" が表示されました。月を変数として使用し、複数の出力がある場合、ジョブは失敗するため、コマンド出力に出力しません。

答え1

移植可能な場合は、シェルパラメータ拡張を使用できます。

$ pDate=2020-06-22
$ year=${pDate%%-*}
$ yearmonth=${pDate%-*}
$ month=${yearmonth#*-}
$ echo $year
2020
$ echo $month
06

kshを使用すると、ここから文字列を読み取ることができます。

$ IFS="-" read year month day <<<"$pDate"
$ echo "$year .. $month .. $day"
2020 .. 06 .. 22

関連情報