3

ここでは Cygwin ユーザーです (ただし、適切な解決策があれば、私も使用している K/Ubuntu に引き継ぐつもりです)。

.bashrc に次のようなウェルカム メッセージがあります。

SAD=(`date +%A-%B-%d-%Y`)
DUB=(`date -u +%k:%M`)
printf "Today's Date is: ${SAD}.\n"
printf "Dublin time is now ${DUB}. (24-Hour Clock)\n"

上記の変数 SAD で空白を使用しようと何度も試みた後、あきらめてハイフンを使用しました。しかし、当然のことながら、私はこの一時しのぎのソリューションに満足していません。私が思い出したように、問題は、 dateの GNU マンページの適切なセクションにリストされている変数とともに、引用符で囲まれたスペース、\s、または同様のエスケープタグを使用しようとするたびに、Year の変数が無視されるか返されることでした。エラー。私がしなければならないことは、dateによって返された完全な文字列に頼ることではなく、上記のコードの順序を維持することです。

これを書いているときに、Welcome メッセージのこのコードの周りに IFS を設定すると、後でデフォルトに戻せば機能する可能性があることに気付きました (上記は 68 行の .bashrc の 13 ~ 17 行に表示されます)。ただし、それを行う方法を思い出せません。また、それが機能するかどうかもわかりません。

一般的に言えば、.bashrc ファイルは有効な BASH 構文ですよね。私のスクリプトは、私が自分で作成したか、他のソースからテストしたスクリプトに確かに似ています。私が見逃しているのは、このメッセージ ブロックのフィールド セパレータを設定および設定解除するためのコードだけだと思います。

解決策を思いついた人は、間違いなく私だけでなく、シェル スクリプトの世界で最初の (または 13 番目から 17 番目の) 一歩を踏み出すネット上の他の比較的初心者に有利に働くでしょう。

BZT

4

5 に答える 5

4

パッティング

SAD=$(date "+%A %B %d %Y")
DUB=$(date -u +%k:%M)
echo "Today's Date is: ${SAD}."
echo "Dublin time is now ${DUB}. (24-Hour Clock)"

私の.bash_profile版画で

Today's Date is: Thursday February 18 2010.
Dublin time is now 12:55. (24-Hour Clock)

それがあなたの望みだと思います。

于 2010-02-18T12:56:53.573 に答える
1

問題は配列宣言です。

SAD=(date +%A-%B-%d-%Y)文字列「date」を要素0として、「+%A-%B-%d-%Y」を要素1として配置していることを意味します。自分で確認してください

$ SAD=(date +%A-%B-%d-%Y)  #<-- this is an array declaration
$ echo ${SAD[0]}
date
$ echo ${SAD[1]}
+%A-%B-%d-%Y

「date」コマンドの値を変数に入れたい場合は、 を使用します$(..)

$ SAD=$(date +%A-%B-%d-%Y)
$ echo ${SAD}
Thursday-February-18-2010
于 2010-02-18T12:55:00.750 に答える
0

私はうまくいく組み合わせを見つけました:
SAD=$(date "+%A %B %d %Y")
echo $SAD
Thursday February 18 2010

さらに別の場合:

  1. 質問するのはお金がかかる
  2. 二重引用符をどこに置くかを知るのに役立ちます。
    日付は引用されたスペースからは明らかにわかりませんが、Bashは知っているので
    、「右耳でささやく」の問題です。

ghostdog74ありがとうございます。

BZT

于 2010-02-18T13:13:29.397 に答える
0

dateスペースを取得するには、単一の文字列になるように引数を引用符で囲む必要があります。また、実際に行うつもりだったのはそれらを評価することだったのに、誤ってSADandを配列として宣言しています。DUBこれを試して:

[/tmp]> $(date "+%A %B %d, %Y")
Thursday February 18, 2010
于 2010-02-18T12:55:17.710 に答える
0

date +%A\ %B\ %d\ %Y

于 2010-02-18T12:58:39.423 に答える