• 締切済み

スクリプトについて

質問NO130772についてなのですが、もう少し教えていただけませんか? wcshでスクリプトを作りたいのですが、 ファイル01.ini 02.ini 03.ini .........とある場合、 echo 何番? set a=$< cp $a.ini test.ini としたところtest.iniにコピーされず、test.in ができてしまいます。 文法的に間違っていますか? それとも、wcshではこのようなことは出来ないのでしょうか? お願いします。

  • Perl
  • 回答数1
  • ありがとう数0

みんなの回答

  • natural
  • ベストアンサー率37% (419/1115)
回答No.1

自信「なし」ですが・・・。 とりあえずaの入力が終わったところで$aを表示してみてください。 表示がOKだったら、次にcpコマンドを以下のように変更してみてください。 cp "$a.ini" "test.ini" 間違ってたらごめんなさい。(^_^;

関連するQ&A

  • 実行中のシェルスクリプト自体を修正した場合の動作

    シェルスクリプトで自分自身を削除するような構文を組んだとしても最後まで実行されました。 しかし、自分自身に別の同名ファイルを上書きコピーした場合は、 中途半端にコピー後のシェルが実行されました。 お聞きしたいのは、  ・「削除した場合でもスクリプトは最後まで実行される」という認識は正しいのか  ・コピーした場合はどうなるのか の2点です。 今回試したところ、コピーした場合は2行目の途中からコピー後のスクリプトが実行されたのですが、 これはマシンのスペックによるのでしょうか? 「コピーした場合はどうなるのかわからない」と判断した方がよいでしょうか? 現在、自分自身を修正するようなスクリプトを作成したいのですが、 上記認識で作ってよいのかどうか迷っています。 よろしくお願いします。 ▼以下、今回試した内容です。 goというスクリプトを作成しました。  #!/bin/bash  rm -rf ./go  echo "1"  echo "2"  echo "3"  echo "4"  echo "5" のように書かれています。 これをカレントディレクトリで ./go のように実行します。 実行結果は特にエラーメッセージも出ず、 goスクリプトは消え、1~5がコンソールに表示されました。 ファイル自体を削除されてもスクリプトを終えるまではコマンドは生きているように見えます。 上記goファイルのrm -rf ./goを、  cp -rf ../go . に修正し、 上の階層に同名のgoスクリプトを用意します。 こちらのgoには  #!/bin/bash  cp -rf ../go .  echo "A1"  echo "A2"  echo "A3"  echo "A4"  echo "A5" と書いています。 この状態で、最初の階層でgoを実行します。 最初の実験結果から、  ・カレントのgoの内容は上の階層のgoをコピーされたもの(echo "A1"~の方)になる。  ・コンソールには1~5が表示される と考えました。 実際は、当然goファイルは上の階層のgoをコピーしたものになりましたが、 コンソールには、 ./go: A1: command not found A2 A3 A4 A5 と表示されました。 2行目の途中から、上の階層のgoの内容が実行されているように見えます。 また2回目の環境でコードを、  #!/bin/bash  rm -rf ./go  cp -rf ../go .  echo "1"  echo "2"  echo "3"  echo "4"  echo "5" にした場合は、コンソールに表示されたのはA1~A5ではなく1~5でした。 ▲上記が試した内容です。

  • Linux 起動スクリプト(shell)

    Linux(CentOS5)で自作の起動スクリプトを作成しているのですが、 うまく動作しません。 /etc/rc.d/init.d配下にスクリプトを設置し、さらに起動スクリプトから /usr/local/lib/sssの外部ファイルを読込んでいます。 その外部ファイルは、iniファイルの設定がtrueの場合、 whileで回る仕組みになっています。(sleep 何秒毎に動くか制御しています) httpdのように常駐起動させたいのですが、どのようにすればいいのでしょうか? 実行すると処理が止まってしまいます。 ■起動スクリプト /etc/rc.d/init.d/aaa ← 起動スクリプト           |― function読込           |― ネットワーク設定読込           |― INIファイル読込み           |― 外部スクリプト実行 ■実行ファイル /usr/sbin/aaa ← 実行ファイル           |― 外部スクリプト読込           |― 外部スクリプト実行 ■外部ファイル           |― 外部ファイル処理起動           |― INIファイルがtrueの場合、whileによりループされる。 -------------------------------------------- /etc/rc.d/init.d/aaa ← 起動スクリプト start() { if [ "${path}" = "true" ]; then KIND="aaa" echo -n $"Starting $KIND services: " daemon aaa ${option} test RETVALaa=$? echo [ $RETVALaaa -eq 0 ] && touch ${LOCKPATH}/${SERVICE_NAME}test || \ RETVALaa=1 return $RETVALaa fi (省略) -------------------------------------------- /usr/sbin/aaa ← 実行ファイル case $1 in "-D" ) case $2 in "test" ) sh ${path}/aaa > /dev/null & ;; * ) ;; esac ;; * ) echo $"Usage: $0 {start|stop|restart|reload|status|condrestart}" exit 2 esac exit 0 (省略) -------------------------------------------- ■外部ファイル if [ "${SETTING}" = "true" ]; then while : do #メイン処理 (省略) sleep ${SLEEP} done #設定がfalseの場合、何もしない elif [ "${SETTING}" = "false" ]; then echo -e "${CONFIG_FALSE}" sleep ${SLEEP} exit 10 #設定が未知のものなら、終了する else echo -e "Error: ${CONFIG_ERROR}" exit 12 fi # 終了 exit 0

  • Shellスクリプトについて

    趣味で自宅にubuntuを入れて、Linuxの本を片手にもって勉強している学生です それでshellスクリプトでテストの結果を入力したら自動的にA.B.Cと認識するプログラムを作ったんですけど $ ./test ./test: line 4: echoPlease input your record: command not found 12 ./test: line 7: case12in: command not found ./test: line 8: syntax error near unexpected token `)' ./test: line 8: `100 | 99 | 98 | 97 | 96 | 95 | 94 | 93 | 92 | 91| 90 ) echo"A";;' なぜコマンドが見つからないのかわかりません ちなみにプログラムは #!/bin/sh echo"Please input your record" read record case"$record"in 100|99|98|97|96|95|94|93|92|91|90) echo"A";; 89|88|87|86|85|84|83|82|81|80) echo"B";; 79|78|77|76|75|74|73|72|71|70) echo"C";; 69|68|67|66|65|64|63|62|61|60) echo"D";; 59|58|57|56|55|54|53|52|51|50) echo"E";; 49|48|47|46|45|44|43|42|41|40) echo"F";; 39|38|37|36|35|34|33|32|31|30) echo"G";; 29|28|27|26|25|24|23|22|21|20) echo"H";; 19|18|17|16|15|14|13|12|11|10) echo"I";; 9|8|7|6|5|4|3|2|1|0) echo"J";; *)echo"sorry,answer not recognized";; esac exit もしどこか間違っていたら教えてください

  • このスクリプト実行できません。教えて!

    スクリプトを勉強中です。 https://technet.microsoft.com/ja-jp/scriptcenter/ff519411.aspx#EAE初心者 上のサイトの最初に記載のある試供ですが上手く表示されません。どうしてでしょうか? 試供 ------------- Wscript.echo "My very first script."そうです。この 1 行がスクリプトです。これは非常に単純なスクリプトであり、たいていのスクリプトはこれより長くなりますが、これもスクリプトです。ここで、この 1 行をどのように処理すればよいのかという疑問がわいてきます。それは非常に単純です。 メモ帳を開きます。 ブラウザからスクリプトをコピーし、メモ帳に貼り付けます。 test.vbs のように、拡張子 .vbs を付けてスクリプトを保存します。 ここでコマンド ウィンドウを開き、ファイルを保存したフォルダに移動し、次のように入力します。 cscript test.vbs前述のスクリプトでこの操作を行った場合、出力は次のようになります。 My very first script. -------------- 私は メモ帳にwscript.echo"wy very first script"を記載し、 保存はファイル名、"test.vbs"とし、 保存先は新しいフォルダ名、testに保存しました。 そのtestのフォルダを開き、そこでコマンドプロンプトも開きcscript test.vbsを入力したのですが、見つかりませんと記載されます。 何が悪いのでしょうか? 宜しくお願いします。

  • 簡単なシェルスクリプトを見てください。

    次のようなシェルスクリプトを作成しました。 #!/bin/sh echo [$1] awk '/"0312345678"/ {print}' /test > /test1 awk '/$1/ {print}' /test > /test2 のように簡単なスクリプトです。 $ sample \"0312345678\" で実行させたら、echo では"0312345678"に出力されます。 しかし、test1にはちゃんと結果が入っていますが、test2は空のファイルです。 なぜ、結果が違うのですか? 実行時、引数を渡す方法で、test1と同じ結果を得たければ、どうすればいいのですか?

  • CSV出力スクリプトについて

    CSV出力のスクリプトを作成しました。 単純に1つのテーブルをそのままCSVで出力するだけです。 件数は60万件程度です。 問題は13,4件に1行改行されてしまいます。 この改行を省くことができるでしょうか? --CSV出力 -- set line 100 -- set echo off コマンド表示を抑止する -- set termout off 画面出力を抑止する -- set heading off 列タイトルの表示を抑止する -- set feedback off 結果メッセージの表示を抑止する -- set colsep ',' 列と列の区切りをカンマ(,)にする set line 100 set echo off set termout off set heading off set feedback off set colsep ',' /* spoolコマンドでファイル出力を開始する */ spool C:\tmp\sample.csv /* 問い合わせ結果がファイルtest.csvに出力される */ SELECT KAIIN_NO, STS_NO, SYOHIN_NO FROM SAMPLE; /* spool offでファイル出力を終了する */ spool off

  • CSV出力スクリプトについて

    CSV出力のスクリプトを作成しました。 単純に1つのテーブルをそのままCSVで出力するだけです。 件数は60万件程度です。 問題はたとえばKAIIN_NOの項目が桁数20桁の場合に出力されるCSVが20桁を超えて50桁くらいで出力されたりします。項目桁数と同じではなくてもよいのですが、空白を出力したくないです。 なにかよい方法はありますでしょうか? ※Select文でTrimをかけても効果はありませんでした。 --CSV出力 -- set line 100 -- set echo off コマンド表示を抑止する -- set termout off 画面出力を抑止する -- set heading off 列タイトルの表示を抑止する -- set feedback off 結果メッセージの表示を抑止する -- set colsep ',' 列と列の区切りをカンマ(,)にする set line 100 set echo off set termout off set heading off set feedback off set colsep ',' /* spoolコマンドでファイル出力を開始する */ spool C:\tmp\sample.csv /* 問い合わせ結果がファイルtest.csvに出力される */ SELECT KAIIN_NO, STS_NO, SYOHIN_NO FROM SAMPLE; /* spool offでファイル出力を終了する */ spool off

  • シェルスクリプトの質問です

    シェルスクリプトの質問です 質問が連続してしまい、もうしわけございません。 1番目から13番目までの引数を表示させようと思い for i in `1 13` do eval echo '$'$i done をかいたのですが、10番目からは不正確になってしまいます。どうしてでしょうか? どなたかご教授お願いいたします。

  • シェルスクリプト 引数の引渡しについて

    こんにちは。現在シェルスクリプトを勉強中なのですがどうしてもわからないことがあり投稿させていただきました。 シェルスクリプトにて作成した引数(引数にスペースがある場合)を別のシェルスクリプトへ渡そうとしたときにうまく引き渡せなくて困っています。 詳しくは以下のスクリプト参照願います。 (1)引数作成のスクリプト _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh a="HELLO" b="\"WOW WOW\"" test.sh $a $b _/_/_/_/_/_/_/_/_/_/_/_/ (2)test.sh _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh echo $1 echo $2 echo $3 _/_/_/_/_/_/_/_/_/_/_/_/ これを実行すると $1=HELLO $2="WOW $3=WOW" となってしまいます。 これを $1=HELLO $2=WOW WOW $3=NULL(空欄) となるようにシェルスクリプトで作成することはできないのでしょうか? ご教授よろしくお願いします。 よろしくお願いします。

  • linuxのシェルスクリプト

    linuxのシェルスクリプト シェルスクリプトの質問をどこですればよいのかよくわからないので、ここでさせていただきます。 最近、始めてシェルスクリプトの勉強を始めました。 スクリプトに渡す引数を出力したいと思い、 echo $1 echo $2 echo $3 とかくと、スクリプトに渡した引数が出力されます。 これを、for文で書くと for i in 1 2 3 do echo $i done とねるのですが、これでは1,2,3が出力されてしまいます。 どうなおしたらいいのでしょうか? よろしくお願いいたします。

専門家に質問してみよう