• ベストアンサー

shで書いたシェルスクリプトで`とか'とかの中で変数を使いたい。

標題の質問ですが、gnu dateコマンドを使って数日前の日付を取得しているのですが、 こんな具合: DATE=`date --d '1 day ago'` 何日前の日付を取得するかを引数で決めたいのです。 しかし DATE=`date` --d '$1 day ago'` これでは当然上手く行きません。 上手いことエスケープして変数を使用する方法を教えてください。 シェルはshです。

質問者が選んだベストアンサー

  • ベストアンサー
  • wolv
  • ベストアンサー率37% (376/1001)
回答No.2

ごめんなさい、`がひとつ多かった^^; ``の中でも変数は展開されますので、 DATE=`date --d $1' day ago'` でいけます

100Gold
質問者

お礼

ご回答ありがとうございます。 $1を'の外に出しちゃってよかったんですね。 助かりました。

その他の回答 (1)

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.1

``の中でも変数は展開されますので、 DATE=`date` --d $1' day ago'` でいけます

関連するQ&A

  • シェルにて日付計算して値を取得したい

    シェルにて日付計算して値を取得したい A = 'date -d "1 days ago" + "%Y%m%d"' B = Aの2ケ月前を設定したい 悩んでいるところ↓ 上記のように、システム日付に1日前を変数Aへ格納して、その変数Aの2ケ月前を求めるには、どのようにしたらよいのでしょうか?

  • シェルでコマンドの実行結果を変数に格納する方法

    以下のようなコマンドライン引数を取得するシェルを書いたのですが 実行時にエラーになってしまいました。コマンド(第2引数以降を取得するコマンド)の実行結果を変数に格納するところでエラーになってしまいました。どのようにすればよろしいでしょうか。 「./test2.sh a b c d e」を実行し「a: コマンドが見つかりません」 というエラーが出てしまいます。 (test2.shの内容) #!/bin/sh OUTPUTFILE=$1 SRC_FILES=`"$@" | cut -d ' ' -f 2-` # 第二引数以降を取得 echo $OUTPUTFILE ←ここは表示される echo $SRC_FILES ←ここでエラー

  • シェルスクリプト:N日前の日付の取得

    #/bin/sh DAY=$1 TIME=`date --date '"$DAY" day ago' +%Y%m%d` echo $TIME 上を実行しても$DAYが展開されず、 date: invalid date '"$DAY" day ago' と、dateコマンドがエラーを返してきます。 $DAYを展開させるためにはどうクォートすればいいのでしょうか?

  • シェルスクリプト コマンドを変数にした時の呼び方

    はじめまして、シェルスクリプトを勉強中の者です。 コマンドを変数にいれて、まとめました。 しかしコマンドの変数を呼びこもうとするとエラーになります。 ============================================ #!/bin/sh GREP="grep" cat "${GREP} '^[0-9]' /home/hoge/test.nicdf" ============================================ ================ シェル実行結果 ============= $ ./test.sh cat: grep '^[0-9]' /home/hoge/test.nicdf: そのようなファイルやディレクトリはありません どう書けば、エラーにならずに正常に動作するでしょうか? ご教授の程よろしくお願いします。

  • シェルスクリプトで配列が使えない

    シェルスクリプトを利用するときに変数を配列として扱えるという記述を見たので、 以下のようなシェルスクリプトを作成したのですが、エラーが出てきてしまいます。 端末で直接入力すると、正しく動作します。そのためなぜエラーとなるのかわかりません。 環境はubuntu 10.10、 GNU bash, バージョン 4.1.5(1)-release (i686-pc-linux-gnu) です。 ---------------------- #!/bin/sh list=(`ls`) echo ${list[0]} ---------------------- 3:Syntax error: "(" unexpected

  • シェル・スクリプトへの変数の定義方法を教えて下さい。

    シェル・スクリプトへの変数の定義方法を教えて下さい。 下記コマンドを実行するには、変数にどの様に指定すれば良いでしょうか。 宜しくお願い致します。 手入力での正しいパラメーターの渡し方。 ./test.sh parm1 parm2 "parm3 a b [\"X\" \"Y\"];" シェル・スクリプトでのパラメーターの渡し方は? #!/bin/bash Cmd=" ????????????? どの様に指定すれば良いでしょうか? ?????????????" buf=$(Cmd)

  • showargsと同じ働きをするシェルスクリプト

    showargsと同じ働きをするシェルスクリプトshowargs.shを作成するにはどのようにしたらよいのですか? シェルの話が難解で、理解できず、showargsは文字列を表示するコマンド?なのかどうかもよく分かりません。引数を10個以上与えた場合や、「% ./showargs.sh “a b” ’c d *’」のように実行した場合にもshowargsと同じ働きをするようにしなければならなくて、余計に混乱しています。わかる方いましたら、ご教示願います。

  • コマンドの結果を変数へ代入@シェルスクリプト

    Linux初心者です。 標記のとおり、シェルスクリプトで、コマンドの結果を変数へ代入することはできるでしょうか? 目的は、あるプログラムの開始時間から終了時間までの経過時間を計算して表示することです。時間を変数に代入しておいて計算したいのですが、方法がわかりません。(入出力のリダイレクト(|や>)、コマンドを引数に渡す方法(``)はわかったのですが...) よろしくお願いいたします。

  • UNIXのシェル

    シェルに関して質問です。 0526とか0525のところは一日ごとにフォルダが作成されます。 unix\yasu\0526\hobby\test.txt unix\yasu\0526\hobby\test.txt unix\tomo\0525\hobby\test.txt unix\tomo\0525\hobby\test.txt ./check.sh MMDD 実行するときにMMDDのところに日付を入れてフォルダがあればコマンド1を実行するようにしたいです。 引数に指定した文字を判定するにはどうしたらいいのでしょうか? よろしくお願いします。 ----------------------------- #シェルの名前は「check.sh」です #! /bin/sh if [ $1 = "日付" ] ; then コマンド1 else コマンド2 fi -----------------------------

  • シェルスクリプトに引数を渡す方法?

    次のようなシェルスクリプトを作り、バッチ処理で実行したいのですが、うまくいかず困っています。 %ls test.sh data %less test.sh #!/bin/sh calc.exe input=$1 コマンドから通常実行するときは、 % test.sh data でうまく行きます。 これを、qsubを使ったバッチ処理で実行しなければならなくて、 %qsub test.sh data とすると、qsubは引数を1つしか取れないので、構文エラーとなり、うまく入力引数"data"を渡せません。 %qsub "test.sh data" %qsub 'test.sh data' で、引数を1つにしようとしましたが、ダメでした。 引数ファイル名"data"は、名前が変わるので、できるだけ可変になるようにしたいです。 どなたか、解決法もしくは、参考URLなど教えてください。