• 締切済み

[を含むテキストをcatしてechoに渡すと表示できません

solari8 Cシェル環境において以下のシェルスクリプトでテキストに含まれる[]が表示できなくて困っています。 echo `cat fileA` fileAの中身は下記です。 1234[aa] このまま表示したいのですが、実行すると「echo:一致しません」と表示されます。 fileAの中身を"1234[aa]"でも1234\[aa\]にしても変わりません。 echo文は変えられないので何とかfileAの中身を工夫して1234[aa]と表示できる方法をどなたかご教示いただけないでしょうか?

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

単純に考えれば cat fileA だけでいいのに.... なんでこんな意味不明かつ非常識なコードになっちゃってるんだろう. ちなみに「echo 文は変えられない」という前提だと不可能じゃないかなぁ.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シェルスクリプトでのechoについて

    お世話になっております。 echo文を使用して変数内に格納された文字列をファイルに追記しようとするとエラーが発生します。 エラーが発生している構文: echo $add >> $file エラー内容: read.sh: line 89: /etc/ntp.conf: そのようなファイルやディレクトリはありません エラー発生時の変数の中身: $add → server 192.168.1.1 $file →/etc/ntp.conf 同シェルスクリプト内のほか箇所では、echo文を使用しての追記は正常に行えております。 また、/etc/ntp.confは存在しており、catコマンドで内容の出力ができることを確認できております。

  • 環境変数IFSについて

    シェルスクリプトでテキストファイルを1行ずつcatで読み込みたいです。 そのため、IFSに¥nを設定して、 読み込み終わったら元に戻すようにしました。 そこで1点気になった事があります。 このシェルスクリプトが動いている間、 他のプロンプトでcatを叩いても1行ずつ読み込んでしまいますか? もしそうであるなら、このシェルスクリプトのプロセス内だけ、catで1行ずつ読み込むにはどうしたらよいのでしょうか。 どなたかご教示お願いします。

  • "echo off"の動きをLinuxのシェルスクリプトで実現

    こんにちは。 現在、Linux(RHEL5)にてシェルスクリプトを組んでいるのですが、 質問があります。 以下のように"rpm -e"を組んで実行した場合、 パッケージB.rpmが存在しない場合、 画面に「エラー:パッケージBpacはインストールされていません」 と表示されてしまいます。 echo "****** Bpacの削除をしています ******" rpm -e Bpac 画面にエラーを表示させたくないのですが、 どのようにすれば良いのでしょうか? (Windowsのecho offのようなものはありませんか?) なお、出だしのecho文(Bpacの削除をしています)は表示させたいのです。 何か方法はないでしょうか? よろしくお願いします。

  • shellスクリプトに複数の引数を渡したい

    shellスクリプトに複数の引数を渡したいと考えています。 下記のようなperlスクリプトを兼ねる事でやりたいことは達成できました。 これをシェルスクリプトだけでやろうとしていて、ハマってしまい、やり方がわからなかったので、質問しています。 ・echo.shの中身 $ cat echo.sh echo $1 $2 ・imglist.plの中身 $ cat imglist.pl my@imglist= `ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} 2>1&`; foreach(@imglist){ my@name=split /\./,$_; system("bash ./echo.sh $name[0] $name[1]"); } ・実行すると、無事echo.shに引数が2つ渡る。 $ perl imglist.pl abc1 jpg abc10 png abc11 png abc2 jpg abc3 jpg これをシェルのみでやろうとして、はまってしまいました。 以下は、パイプ処理等を使ったりしてやってみたのですが出来ませんでした。 ・awkでファイル名と拡張子に分解し、パイプで渡そうとしても何故か渡らない・・ $ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}'| bash ./echo.sh ・ファイルに一旦保存し、catコマンドでパイプで渡しても駄目 $ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}' > imglist.txt $ cat imglist.txt | bash ./echo.sh ・echoコマンドを使ってパイプで渡しても駄目 $ echo `cat imglist.txt` |bash ./echo.sh ・for.shというファイルを作成し、for構文でimglist.txtの中身を渡すと引数が一つずつしか渡らない $ cat for.sh for id in $(cat imglist.txt); do echo $id done $ bash for.sh tile1 jpg tile10 jpg どうやれば、コマンドライン上やシェルスクリプトだけで、今回はファイル名と拡張子という形で複数行からなる2つの引数を渡すことができますでしょうか

    • ベストアンサー
    • Perl
  • PHPにて変数をテキストファイルに出力する方法

    PHPにて、変数のテキスト書き出しをしたいのですが、 シェルスクリプトでいう左記の動作ですが、「echo $seireki >> ./time.txt」 PHPで実施させる場合、どのようになるのでしょうか。 <? $seireki = $_POST{'seireki'}; `echo $seireki >> ./time.txt`; ?> では無理でした。 ご教示頂ければ幸いです。よろしくお願いします。

    • ベストアンサー
    • PHP
  • "${0%/*}"の内容について

    linuxで、シェルスクリプトを作成しているのですが、 あるページを参考にしていたところ、 "${0%/*}" 内容がでてきました。(参考ページは、cd "${0%/*}" と記述されていました。) 確認のために、下記ファイルを作成し、 echo "${0%/*}" でどういった内容になるのか確認してみました。 ■シェルスクリプトの内容(ファイル:kakunin.sh) #!/bin/sh echo "${0%/*}" (1)shで、シェルスクリプト実行 # sh kakunin.sh kakunin.sh ←結果 (2).(ドット)により実行。 # ./kakunin.sh . ←結果(. ドット) 結果が異なっています。 "${0%/*}"は何を意味しているのでしょうか。 なぜ、(1)と(2)で、実行結果が異なるのでしょうか。 御教示お願いします。

  • Linuxでの質問。(echoコマンドなど)

    Linuxでの質問。 1.echoコマンドで* $home=' home ' (ただし home はシェル変数homeの値)と表示したい。echoコマンドにどのようは引数を渡せばよいのでしょうか。 実行例 % echo 適切な引数 * $home='/home/gbu/myname' 答えは echo \* "\home="\'$home\' でよろしいですか。 echo \* '$home='\'$home\' と入力しても同じ結果が出るのですが、どっちでいいでしょうか。 2.次の2つのコマンドラインは実行結果が異なる。その違いが生じる理由は何でしょうか。 % cd ; (cd / ; pwd) ; pwd % cd ; cd / ; pwd ; pwd まったく初心者です。manコマンドを使って調べたのですが。。 man () って入力しても、何にも出なくて、ぜひ教えてください。お願いします。 3.演習課題にならって、 エイリアスが子プロセスのシェル(サブシェル)に引き継がれるかどうかを確かめる手順の例を示しなさい。っていう課題が出ました。どういうふうにやればいいでしょうか。教えてください。 演習課題 シェル変数と環境変数の違いの確認 % set foo=1 シェル変数fooに値を設定する。 % setenv FOO 1 環境変数FOOに値を設定する。 % echo $foo シェル変数fooの値を表示する。 % echo $FOO 環境変数FOOの値を表示する。 % tcsh 子プロセスとしてシェルを起動する。 (ここから、子プロセスのシェル上での操作) % echo $foo シェル変数fooの値の表示を試みる。(引き継がれていない。) % echo $FOO 環境変数FOOの値を表示する。(引き継がれている。) % set foo=2 シェル変数fooに値を設定する。 % setenv FOO 2 環境変数FOOに値を設定する。 % exit 子プロセスとしてシェルを起動したシェルを終了する。 (ここまで、子プロセスのシェル上での操作) % echo $foo シェル変数fooの値を表示する。(子プロセスでの変更は影響しない。) % echo $FOO 環境変数FOOの値を表示する。(子プロセスでの変更は影響しない。) エイリアスの意味を調べたのですが、「コマンドを別名で登録したもの」と解釈されていて、これはどういうことなんでしょうか。 この問題の意味は、課題にならって set alias=1 と設定して、次は setenv ALIAS 1 そして、課題のように、fooのとこをalias、FOOのとこをALIASと変えて、最後echo $ALIAS を調べればいいのですか。 学校の宿題ですが、やってもぜんぜん意味不明なので、助けてください。

  • Jquery.PHPファイルのechoが表示されない

    初めまして、Jqueryのloadについて教えてください。 環境は、vista,eclipse3.5 ,php5.0 JQuery1.4.2,xmapp,IE8です ファイルはすべて同じ階層にあります。 PHPファイル単体で表示させると、 正常にecho内'aaa'が表示されるのですが、 JQUERYを介してみると、 phpファイルの内部echo'aaa'が表示されません。。。 <?php ?>から外しhtmlであればloadすることはできます。 どなたか改善策ご存じでしたら、よろしくお願いしたします。 <!--html--> <html><head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="text.js"></script> <title></title></head> <body> <li><a href="javascript:changetext()">リンク</a></li> <div id="box">ここに表示</div> </body> </html> //text.js function changetext() {$("#box").load("testo.php");} //testo.php <?php echo 'aaa'; ?>

  • 【シェルスクリプト】 ローカル変数、グローバル変数

    シェルスクリプトのローカル変数、グローバル変数の取り扱いで迷っています。 ---------------- #!/bin/bash count=0 cat file | while read i do count=`expre $count + 1 ` done echo $count ---------------- fileの中身をcatで流して、それを一行ずつ読み込みます。 そのつど、count の値を増やしていくようにしたいのですが、最後の出力値は0となります。 cat→whileで読み込ませて処理している間はローカル変数として扱われているのでしょうか。 またそうであるならば、シェルスクリプトでグローバル変数を明示的に宣言するにはどうのようにすればいいのでしょうか。

  • killでプロセスを終了したときの”終了しました”を表示させたくない

    お世話になります。 下記の内容のシェルスクリプトを実行すると数字の1~5が表示され最後に”終了しました”(LANG=Cだと”Terminated”)と表示されます。この”終了しました”を表示させたくないのですが何か良い方法はありますでしょうか? よろしくお願い致します。 ------- 以下シェルスクリプト -------- #!/bin/sh i=0 ( while : do sleep 1 done & ) | while : do echo $i if [ $i -eq 5 ];then kill -TERM 0 fi i=`expr $i + 1` done