• ベストアンサー

リダイレクションについて

kayu24の回答

  • kayu24
  • ベストアンサー率0% (0/2)
回答No.3

bashはよくわからないのですが、少なくともcshの場合はこんな使い方ができます。 ::メニュー形式のシェルを作りたい! #!/bin/csh cat << EOF #-------------------------# 1. 10代 2. 20代 3. 30代 #-------------------------# EOF echo -n "年齢は? >" set innum=$<    ・    ・ 変数に入力された値で処理を行う    ・    ・ つまり、echoを連発しなくてもよい! ついでに、"#"も認識できます。 飽くまでも使い方の一例ですが。

関連するQ&A

  • 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
  • Linuxでの別プロセス起動について

    コマンド置換を使用した場合に、シェル自体が子プロセスとして立ち上がる場合とそうでない場合があります。 具体的には以下のような場合です。 【パターン1】 コマンド置換内の処理が1行の場合は子プロセスが発生しない abc=`pstree` echo $abc -sshd-+-sshd---bash---pstree (該当部分だけを切り出しています) 【パターン2】 コマンド置換内で処理が2行以上ある場合は子プロセスが発生する abc=`echo; pstree` echo $abc -sshd-+-sshd---bash---bash---pstree (該当部分だけを切り出しています) パイプを使用した場合には子プロセスとして処理が実行されることは認識しているのですが、コマンド置換の場合も子プロセスとして実行されるのが普通なのでしょうか? だとすれば、パターン1のように処理が1行だけの場合には子プロセスとして立ち上がらない理由は何でしょうか? このあたりに詳しい方、ご教示いただければ幸いです。

  • コマンド履歴が~/.bash_historyに保存されない

    通常、コマンド履歴は~/.bash_historyに保存されるはずだと思っていましたが保存されていないようです、原因がわかりません。 助けて頂けませんでしょうか [root@localhost sub]# su - hoge [hoge@localhost ~]$ ls Desktop i a testdir ec.txt [hoge@localhost ~]$ tail ~/.bash_history set|grep abc abc=`date` set|grep abc echo $abc abc=1 echo $abc abc=$(date) echo $abc alias exit

  • PerlからPythonについて

    以下のPerlをPythonで書くとどうなるのでしょうか? pythonのヒアドキュメントと<DATA>, chompの動作の置き換えが知りたいです。 ヒアドキュメントは"""や'''で可能?と思いますが、ヒアドキュメントを1行づつ取り出す方法がわかりません。 use strict; # <-- Pythonの厳格化?の警告方法も知りたいです。 while(<DATA>){ chomp; print "$_\n"; } exit; __DATA__ abc de f ghi 参考になるサイトや本をご存じの方教えてください。

    • ベストアンサー
    • Perl
  • 検索してあった数を調べる 初心者です。

    perlを使ってabc.txtの中に 1999 という文字列が何個あるか調べるプログラムはどのように書けばよろしのでしょうか?@を使ったりしてやってみたのですが、これでは 1999 が含まれる行の数しか出し方がわかりませんでした。 ご教授ください。お願い致します。

    • ベストアンサー
    • Perl
  • シェルスクリプトについて

    bangou.txtには ▲ 123123 123123 100000 ▲ ▲ というように数値が入っています。(▲は空白ですが改行コードがはいってます) この場合、1行目と3行目を比較するスクリプトを作りたいと思って 色々調べて以下のようなスクリプトを作ってみましたけどうまく動きません。 #!/bin/bash for iii in `sed -n '1p' bangou.txt` do jjj=`sed -n '2p' bangou.txt` kkk=`sed -n '3p' bangou.txt` #declare -i $kkk if [ "$kkk" = "$iii" ] then echo "$iii" else echo "$kkk" fi done どこか基本的なところで間違えているのかと思うのですが初心者なので よくわかりません。 わかる方がいらっしゃったら教えていただけないでしょうか。

  • 連想配列を含むヒアドキュメントの書き方

    連想配列を含むヒアドキュメントの書き方を教えてください。 以下のコードならうまく行きました。 -(1)-------------------------- $SS = $_SERVER['PHP_SELF']; $html_txt = <<<EOT ($SS) EOT; echo $html_txt; ------------------------------ これを一時的な変数を使わずに以下のようなコードで実行したいです。 -(2)-------------------------- $html_txt = <<<EOT ($_SERVER['PHP_SELF']) EOT; echo $html_txt; ------------------------------ これを実行すると # Parse error: syntax error, unexpected '"', # expecting T_STRING or T_VARIABLE or T_NUM_STRING in … というエラーが出てしまいます。 最悪、(1)でもいいと思っています。しかし(2)のようなケースでもできてもいいのではないかと思うのですが、エスケープを入れたり「$_SERVER["PHP_SELF"]」などとクォーテーションを変更したりしてもうまく行きません。 質問は以下です ・(2)のような記述はPHPでは不可能なのでしょうか? ・もし可能なら(1)の何が悪いのか、どうすればうまく行くのかを教えてください よろしくお願いします。

    • ベストアンサー
    • PHP
  • 行頭と行末に文字追加

    文字変換がうまくいきません。 sedとawkもしくはperlを使ってなんとかならないでしょうか? 行の行頭と行末を " で囲みたいのですが。 ------test.txt----- abc cde fgh hijk lm nopq rstu vwx y z ------test.txt---- 以下のように。 "abc cde fgh" "hijk lm" "nopq rstu vwx y z" よろしくお願いします。

    • ベストアンサー
    • Perl
  • バッチコマンドの「set」で入力した内容をファイルに出力する場合の問題点

    DOSのバッチコマンドで以下のようなものを作りました。 set /p abc= echo %abc% > nyuryoku.txt 画面から入力した文字を「nyuryoku.txt」に出力することを意図したものですが、2つ問題が出ています。 (1)何も入力しないと、「nyuryoku.txt」に「ECHO は <ON> です。」と出力されてしまいます。 これは「」(つまりNULL値)を出力できないでしょうか。 (2)「123」を入力すると「nyuryoku.txt」に「123 」と出力されてしまします。つまり最後に半角スペースがついてしまいます。 これは「123」を出力できないでしょうか。 すみません。おわかりになる方がいたら教えてください。

  • awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか

    awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか。 ファイル(hoge.txt)の内容は、次の通り(全4行) 123 456 50 20 これを、bashスクリプトで計算させます。 FF=`cat hoge.txt | awk 'BEGIN {x=$2;printf ("%s, %s", (148+x*0.05), x);}'` echo "答え = ${FF}" このときの$2の値は、50です。但し、文字列として扱われているようです。 xの値を、数値として代入され、四則演算をさせるにはどうしたら良いですか? 以上、よろしくお願いします。