UNIX系初心です。

シェルススクリプトのなかでFTPであるファイルを取得したいのですが、
ファイル名がabcd.20010101.csvというファイル「日付の所が毎日更新されます」
シェル変数で
>
set a_name = adcd.
set b_name = date "+%Y%m%d"
set c_name = .csv
set x_name = $a_name$b_name&c_name

ftp -i -n 999.999.999.999 << END
user ***** *****
get /home/$x_name /root/kensaku.csv
bye
END
>

としたところ
「b_name」のところに値がうまく入りません
set b_name = date "+%Y%m%d"
がうまくセットされないようです
ほかによい方法があれば教えてください。
かなり困ってます。
よろしくお願いします。

A 回答 (3件)

> どうもうまくいかないみたいです。



うまくいくって。

どううまくいかないのかを書かないと、それ以上分からないですね。
どうやって確認しているんですか?

スクリプトを -x を指定して実行してみたら、きっと勘違いをしていることに
気がつくんじゃないかなあ。

% csh -x スクリプトファイル名


ちなみに、set x_name のところの b_name&c_name は、質問を書くときの
打ち間違いだと思っていて良いですね?

この回答への補足

うまくいきました。
SETがいらなかったみたいです。
bashでやってました…
ありがとうございました。

補足日時:2001/09/07 20:00
    • good
    • 0

自信なしですが・・・。

(^_^;
dateコマンドをバッククォート(`)で囲むというのはどうでしょうか。

この回答への補足

どうもうまくいかないみたいです。

補足日時:2001/09/07 19:37
    • good
    • 0
この回答へのお礼

うまくいきました。
SETがいらなかったみたいです。
ありがとうございました。

お礼日時:2001/09/07 20:00

> 「b_name」のところに値がうまく入りません



バッククォート "`" で括りましょう。日本語キーボードなら Shift+@ です。

set b_name = `date "+%Y%m%d"`

この回答への補足

どうもうまくいかないみたいです。

補足日時:2001/09/07 19:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qシェルスクリプト間で排他をとりたい

環境 linux(redhat) 使用シェル bash
シェルスクリプトAとシェルスクリプトBを作成し、
シェルスクリプトAが動作している間は、シェルスクリプトBの動作を禁止したいと考えています。
例えば、シェルスクリプトAが起動している状態で、シェルスクリプトBが起動されたとき、シェルスクリプトBは、シェルスクリプトAが起動していることを検知して、自発的に処理を終了するようにしたいと考えています。
上記のような仕組みをシェルスクリプトで実現可能でしょうか?
基本的には、シェルスクリプトの先頭で、ある資源のロックを行い、終了時にロックの解放ができれば、その仕組みは実現可能と考えています。
(シェルの異常終了時は、ロックが自動的に解放されることが望ましい)
上記のようなことをシェル(bash)で実現可能でしょうか。
bash単独での方法、もしくはbashからperl,C言語作成の実行モジュールを呼び出す方法でもかまいません。
(ちなみにperl(もしくはC言語作成のモジュール)単独では実現可能なことはわかっています)

Aベストアンサー

lockfileコマンドでいけるのではないかと。
詳しくはman lockfileをご覧下さい。

ただ、異常終了時は少し困りますね。
trapコマンドでシグナルを捕捉することはできますが、
SIGKILLは捕捉できないです。
まぁ、どうしようもないですが。

Q起動時DRIVER_IRQL_NOT_LESS_OREQUAL(Smb_driver_sys)

先日ウインドウズ7から10にアップデートした時から起動時ブルーバックでこのメッセージが出るようになりました
対処法がわからず困っています。メッセージをなくす方法教えてください、よろしくお願いします。

Aベストアンサー

OSは違うかもしれませんが、同様のエラーメッセージに対して先日回答しています。
かなり残念な内容ですが、ご参考になれば。
https://oshiete.goo.ne.jp/qa/9067332.html

Q趣味のプログラミング、シェルスクリプトでやるなら?またはPerl?

新人SEです。仕事でUNIXのシェルスクリプトを使っているのですが休日にも趣味でシェルスクリプトで何か書けたらいいと思っています。
しかし趣味のシェルスクリプトとなると、何を書いたら楽しめるか・便利になるのかあまりイメージが湧きません・・自宅でサーバ管理などしてるわけではないので、クライアント側では何かシェルスクリプトを使うメリットがあるのか分からないのです。
ちなみに、シェルスクリプトが趣味になりそうになかったら、同じUNIX系ツールということでPerlを覚えようかとも思っています。Webアプリの作成などにも興味ありますし・・
趣味のシェルスクリプト、何かいい例などありますでしょうか?関連してPerlについてでもいいので何か教えて頂けると嬉しいです。

Aベストアンサー

UNIXならC言語だと思います。
趣味でシェルスクリプトというのもなんだか良くわかりませんね。私はパズルが好きなので、エクセルマクロでパズルを解くプログラムを作ったり、カレンダーを作ったりしましたね。
もし趣味でもUNIX環境ならば、C言語かな。Windowsであれば、エクセルVBAや無料のC#、VisualBasicをお勧めします。シェルスクリプトやperlはそんなに難しくないので、なにかひとつの言語ができるようになればあとは容易いと思いますよ。

Qnamedとnamed-xferの動き方(?)について

上記のWEBを見ながら設定してて、実際にnamedとnamed-xferっていう2つのプログラムをLinuxの中で動かしてみたいんですけど、このnamedとnamed-xferがどんなプログラムでどんな風にどれくらいの時間の感覚で動いているのか全くわかりません。教えてください。

Aベストアンサー

まず,これらのソフトは『BIND』と呼ばれるDNSのソフトパッケージの一部です。

namedはDNSサーバ本体,そのものであり,常時動いています。

named-xferは,前述namedが使う補助的なプログラムです。
namedに呼ばれたときだけ,たまにうごきます。
環境によっては,一生動きません(呼ばれません)。
複数台のDNSサーバ間でDNS情報をやり取りする際(ゾーン転送)に使われるものなので,cwsk2001さんのように『ちょっとnamed動かしてみた』という環境では,named-xferが動くことはありませんよ。プライマリDNS,セカンダリDNSという言葉がありますよね。あれに関連して使われるものです。

Qシェルスクリプトのbashとperlについて

シェルスクリプトのbashとperlについて
今さら気づいたのですが、PerlもUNIXのコマンドやシェルスクリプトとして使用できるということでしょうか。
RubyやPHPをUNIXのコマンドやシェルスクリプトとして使用することはできますでしょうか。
学ぶとしたら、bashとPerlのどちらが良いでしょうか。

また、シェルスクリプトはどんな用途や利点がありますでしょうか。
Webアプリケーションによるバックアップやログをタイマーでセットして自動的に取得したりすることは可能でしょうか。

Aベストアンサー

perlやphpをシェルとしては使い物にはなりません。

コマンドシェルとして使用するには最低限一行ずつ命令を読み取り、その都度実行する仕組みが必要です。
perl等は1行ずつではなくファイルすべてを読み終わってから実行するため、シェルとしては役に立ちません。

イメージでいうと、ログインしてからひたすら文字を入力して、実際に実行されるのは、ログアウトしてからということになります。

シェルスクリプトの利点としては、普段使用しているコマンドをそのままの書式で作成できるというところです。

また、UNIX系のOSであれば何らかのシェルは必ず入っています。Perl等は別途インストールする必要があります。とくに、サーバーを構築する場合はサービスに不要なツールはインストールしたくないので、perl等の言語は入れていない場合も多いです。

Qjavaws-1_2_0_01-linux-i586-i.zip

/usr/java/j2re1.4.1_01のなかに
javaws-1_2_0_01-linux-i586-i.zip
というものがありますがこれはいったいなんなのでしょうか?
ひらいてみるといろいろなファイルがみえます。
そのなかにinstall.shというものがありますがこれを
インストールするとどうなるのでしょうか?
インストールしてみようかとおもったのですが
インストールの方法がわかりません。
よろしくおねがいします。

Aベストアンサー

Java Web Startという機能です。
詳しくは下記URLを参考にしてください。

javaws-1_2_0_01-linux-i586-i.zipについて一番下に載っています
http://java.sun.com/j2se/1.4.1/ja/install-linux.html

Java Web Startについて
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/jws/index.html
http://java.sun.com/products/javawebstart/ja/index_ja.html
http://www.utj.co.jp/XML/dev/java/dxjava_3.html

Qシェルスクリプトの中であるプログラムにシグナルを送りたいとき

こんにちわ,

今シェルスクリプトの学習をしています。
シェルスクリプトのなかであるプログラムにSIGINTを送るシェルスクリプトを作るにはどうすればいいでしょうか。
たとえば,
./hogeというCプログラムがあり,その中でsignal関数を用いてSIGINTを捕らえるようなプログラムがなされているとき,
シェルスクリプトで

#!/bin/sh
./hoge &
PID=$$
sleep 2
kill SIGINT $PID

だと,$$にはこのシェル自体のPIDが返ってきているので,うまくいきません。

なんとか,./hogeをうごかし,その後何秒かあとにSIGNALを送るようなシェルスクリプトを作りたいのですが,どうすればいいでしょうか。

Cでforkさせて外部呼出しによって送るしかないのでしょうか。

よろしくお願いします。

Aベストアンサー

No2のtatsu99さんが書かれている通り、「$!」でバックグラウンド実行したプロセスのプロセスIDが取得できます。
ただし、これはBシェル(/bin/sh)の標準的な仕様であり、Linuxに限らずBシェルの動く環境であれば、ほぼ例外なく使える機能です。
もちろん、bashのようなBシェルの上位互換シェルでもつかえます。

ちなみに、このような特殊変数には他に、
$? 直前のコマンドの終了ステータス
$$ 実行中のシェルスクリプトのPID
$- Bシェルを制御するフラグの状態
などがあり、シェルスクリプトを使う際には非常に役に立ちます。

Q[%20]=空白の定義はOSに依存しますか?

IPネットワーク上での、空白入りファイル名で、
%20と表記することを知りましたが、これはマッキントッシュだけに限定された表記方法でしょうか?
他のOSでも同じように%20で良いでしょうか?

Aベストアンサー

%20はURLエンコードされた結果ですから
WindowsでもMacintoshでも他のOSでも、半角スペースを表します。

参考URL:http://homepage1.nifty.com/glass/tom_neko/web/web_03.html#URLencode

QWEBプログラマーにとってのシェルスクリプト

現在業務でPHPやJSでWEBシステムをつくっているものです。

サーバーは、見よう見まねでVPS中でWEBアプリをつくったりWEBサーバーのセットアップ
なんかができる程度です。

しかし、いっさいシェルスクリプトというものを書いたことがありません。
WEBサーバーを作るとき以外VPSにほとんどログインすくこともないので
そうそうサーバーそのものをさわる機会も多くないです。

さてそこでしつもんです。
いわゆるWEBプログラマーにとって
シェルスクリプトは必須スキルなのでしょうか?
もちろんサーバー屋からプログラマーまでこなす人はあつかえるのでしょうが、WEBプログラミングを生業としているひとのシェルスクリプトの扱えるレベルが知りたいです。
もちろんできることにはこしたことがないと思いますが、

実際のWEB開発側ばかりさわっていてなかなかシェルスクリプトをさわるきっかけがありません。
皆様のシェルスクリプトの習得具合をしりたいです。

Aベストアンサー

UNIX系のOSを扱うなら知らないと不便ですよ。

コンソールは シェルそのものなんだし、apacheとかのサーバソフトを
サーバに組み込んだりするときはスクリプトをシェルで
書くことが多いと思います。

DOSプロンプトよりはずっと美しいので、学ぶのはたやすいです。

Qssh_known_hosts について

SSH接続において初回接続時は登録されていないホストからの接続というメッセージが表示され、そのホストの情報が、ssh_known_hostsに登録されますが、
ある資料では、v1ではそこに登録され、v2ではssh_known_hosts2に登録されると書かれており、
ある資料では、RSA鍵がssh_known_hostsに、
DSA鍵がssh_known_hosts2に格納されると書かれています。
本当のところはどちらが正しいのでしょうか?
教えてください。

Aベストアンサー

前者が正しいようです。

ただし、参考URLの15.3.4節をみてもわかるように、最新のOpenSSHでは*2というファイルを使わなくなりました。

http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/s1-openssh-client-config.html

参考URL:http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/s1-openssh-client-config.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング