Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。
シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。
shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。
Q&A
解決済
3回答
5137閲覧
総合スコア12
0グッド
0クリップ
投稿2016/05/19 00:47
0
シェル初心者です。 下記のようなことをしたいのですが、 うまく7週間後の日付を変数に代入することができません。 どうすればよいでしょうか?
# 特定の日付YYYY-MM-DD day="2016-05-19" # 7週間後の日付を取得して変数に代入 target_day=`eval date +%F -d '${day} 49 days'` echo ${target_day}
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答3件
ベストアンサー
エラーの直接の原因としては、evalしているがために、'${day} 49 days'が1つの引数じゃなくて分解され3つの引数となるからです。 ${day}を展開したくてevalしたんでしょうが、それが間違いです。evalせず、'でなく"で囲む。
'${day} 49 days'
${day}
'
"
もしくは、この場合は下記のように、たまたま空白なしで書けるので、空白を入れずもともと1引数にするか(一般的には"で囲みます)。
Bash1target_day=`date +%F -d ${day}+49days`
Bash
1target_day=`date +%F -d ${day}+49days`
投稿2016/05/19 01:18
総合スコア86457
回答へのコメント
2016/05/19 01:55
「eval」を除外と、-dのパラメータ指定を「'」リテラルにすると期待する「2016-07-07」がechoされました。
bash1day="2016-05-19" 2target_day=`date +%F -d "${day} 49 days"` 3 4echo ${target_day}
bash
1day="2016-05-19" 2target_day=`date +%F -d "${day} 49 days"` 3 4echo ${target_day}
投稿2016/05/19 01:04
総合スコア2335
正しくは以下ではないでしょうか。 target_day=date +%F -d "${day} 49 days"
date +%F -d "${day} 49 days"
投稿2016/05/19 00:55
総合スコア4315
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.30%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
シェルで特定の日時から7週間後の日にちを計算して変数に代入したい
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/19 01:55