• ベストアンサー

${var@a}、${var@A}、...!?

bashリファレンスに、${var@a}、${var@A}、${var@E}、${var@P}、${var@Q}というものが載っているのですが、コマンドラインでecho ${var@a}とするとbad substitutionとエラーが出るだけです。これらのものはどうやって使うものなのでしょうか?

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4851/10265)
回答No.1

> bashリファレンスに、${var@a}、${var@A}、${var@E}、${var@P}、${var@Q}というものが載っているのですが、 どこに載ってますか?少なくともBash4まではそういう構文は無いと思いますけど。

noname#225432
質問者

お礼

ありがとうございます。bashリファレンスに載っていましたが新機能なのかもしれません。

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

関連するQ&A

  • シェルスクリプトでのmysqlコマンド実行

    いつもお世話になっております。 MYSQLで、データベースの一覧を出力し それを上から順にテーブル作成をしたいと考えています。 source コマンドで、ファイルを読み込んで実行したいのですが、 2つ目のfor文に上手く変数を渡せません。 'source $var_ファイル_$i.sql'` ↑これに変数が上手く渡りません。 そのままの値になってしまいます。 どうにか渡す方法はないでしょうか。 #!bin/bash var=`hostname -a` for i in `mysql -u root -p -e 'show databases'` do for (( cnt = 0; cnt < 11; cnt++ )) do echo $var echo $i `mysql -u root -p $i -e 'source $var_ファイル_$i.sql'` 1>> $var_ファイル_$i.log 2>&1 echo "$cnt 回目の処理" done done exit 0

  • bashスクリプトについて

    #!/usr/local/bin/bash など1行目に書いてbashのスクリプトを作成したいのですが、 計算式を作りたいのですができないものでしょうか? たとえばe2pという名前で ###----------------### echo "script test" $i=1 printf $i ###----------------### として、./e2pと実行しても、script test は表示されても、以下二行はエラー ./e2p: =1: command not found ./e2p: print: command not found となって表示されませんでした。 どのようにすれば、 $a=1 $b=3 print $a+b などいったことができるのでしょうか? また、根底から間違っている気もします・・・どのようにすればよろしいでしょうか?

  • Linux の shell プログラミングについて

    すみません、どなたがご存じでしたら教えてください。 Linux の shell プログラミングですが、 実行するコマンドをそのまま表示する良い方法が無いでしょうか? 現在は実行するコマンドをechoで書いています。 たとえば次のような感じです。 #!/bin/bash var1=/etc echo 'ls -l $var1 | wc -l' ls -l $var1 | wc -l 結果 ls -l $var1 | wc -l 205 でも(echoで)同じ内容を2行書きたくないので いろいろ調べて次のようにしてみました。 #!/bin/bash var1=/etc set -x ls -l $var1 | wc -l set +x 結果は + ls -l /etc + wc -l 205 + set +x 思ったようになりませんでした。 他に良い方法が何かありますでしょうか? よろしくお願いいたします。

  • perl -p -i.bak -e "!a!A!g" *

    をコマンドラインで実行すると ファイルをオープンできないとのエラーが出ます。 ちなみに perl -p -i.bak -e "!a!A!g" x.txt ならばOKです。 ディレクトリ内のすべてのフィルに適用したいのですがどうしたらいいでしょうか? WindowsXP に最新版のPerlを入れて実行しています。

    • ベストアンサー
    • Perl
  • コマンドの実行結果が最初の1単語しか表示されない(sh)

    コマンドの実行結果によって条件分岐をしたいのに、 実行結果が一部しか得られず、うまくいきません。 やりたいことは非常に単純で以下だけです。 (1)service httpd status を実行し、 (2)running と言う文字が含まれていれば 「good」 と表示する。 (3)含まれていなければ 「bad」 と表示する。 しかし、例えば以下を実行すると #!/bin/bash A=(`service httpd status`) echo $A 実行結果の最初の1単語「httpd」としか表示されず、 条件分岐に使えません。 コマンドラインから直接 service httpd status と打つと、 httpd (pid 32506 32505 ) is running.. のように表示されます。 どなたか、さらさらっとサンプルをご提示頂けましたら 大変嬉しいです。どうぞ宜しく御願いいたします。

  • 「@$変数」の「@の意味は?」

    PHPの勉強中です。 サンプルプログラムを見ていて以下の「@」の意味がわかりません。 ------------------- // 入力内容を取得する $text1 = @$_POST["text1"]; if (strlen(@$text1) < 4 or strlen(@$text1) > 8) { echo "<p>4~8文字以内でお願いします"; } --------------------- マニュアルには「式の先頭につけるとエラーを非表示」と有りますが、変数の前につけるのはどういう意味があるのでしょうか? 試しに@を全て消しても同じ結果でした。 アドバイスよろしくお願いします。

    • ベストアンサー
    • PHP
  • shのシェルスクリプトの演算方法について・・・

    bashのシェルスクリプトについてもお聞きしたのですが、 その方法では演算ができない!ということになってしまいました・・・ こういうちょこっとしたところが違うのが嫌です・・・↓ bashの場合は ---------- bash$ a=1 bash$ a=$(( $a + 1 )) bash$ echo $a 2 ---------- となったのですが、shではエラーが出てしまいました・・・ また、shのスクリプトもbashのスクリプトもシェルスクリプトと呼ぶのでしょうか?

  • [LISPプログラミング] ラムダ計算 - 置換(substitution)

    LISPプログラミングの課題についての質問(その2)です. 以下に,課題,課題を解くのに必要な知識,試作したプログラム,質問を,この順に載せます.長くなりますがご了承ください.なお,この質問に答えられる方(LISPとラムダ計算の両方の知識がある方)は, http://okwave.jp/qa5152352.html の質問にもお答えいただけると幸いです. 【課題】λ式のリダクションに関する以下の関数を作成せよ. 2. [lexp1/x]lexp2 を表現する関数 substitution   (substitution 'x lexp1 lexp2) 【課題で扱うλ式,ラムダ計算(抜粋)】 A. λ式のシンタックス(を BNF で記述したもの)は以下のとおりである.   <λ-expression> ::= <variable> | <application> | <abstraction>   <application> ::= (<λ-expression>)<λ-expression>   <abstraction> ::= λ<variable>.<λ-expression>   以下,変数(variable)を小文字 x,y,z,... で,任意のλ式を大文字 P,Q,R,... で表す. B. λ式 P と Q が文字まで含めてまったく同じであるとき,P と Q が等しいといい, P≡Q と記す.また,等しくないときは P≡/≡Q と記す. C. 自由変数集合   λ式 E の自由変数の集合を φ(E) と記す.   (1) c が定数ならば,φ(c)={}   (2) 任意の変数 x に対して φ(x)={x}   (3) φ(λx.P)=φ(P)-{x}   (4) φ((P)Q)=φ(P)∪φ(Q) D. λ式 M と N がα合同であることを M=N と記す. E. P 中のすべての自由変数 x を Q で置換(substitution)することを [Q/x]P と記す.   (1) [Q/x]x=Q   (2) x≡/≡y ならば [Q/x]y=y   (3) 任意のλ式 E に対して [Q/x]λx.E=λx.E   (4) x≡/≡y かつ「xがφ(E)に含まれない,または,yがφ(Q)に含まれない」ならば,任意のλ式 E に対して [Q/x]λy.E=λy.[Q/x]E   (5) x≡/≡y かつ x∈φ(E) かつ y∈φ(Q) ならば,任意のλ式 E ,任意の z(ただし,z は x≡/≡z≡/≡y かつ E(Q) の自由変数でも束縛変数でもない)に対して [Q/x]λy.E=λz.[Q/x]{z/y}E   (6) [Q/x](E1)E2=([Q/x]E1)[Q/x]E2 【試作したプログラム】 ; 2. [lexp1/x]lexp2 を表現する関数 substitution ; (substitution 'x lexp1 lexp2) (defun substitution (x lexp1 lexp2)  (if (= (length lexp2) 1)   (if (equal x (car lexp2)) lexp1 lexp2) ; then (1), else (2)   (if (equal 'L (car lexp2))    (if (equal x (second lexp2))     lexp2 ; (3)     ; (4),(5)に対応する処理    )    (if (listp (car lexp2))     (list (list (substitution x lexp1 (car lexp1)))           (substitution x lexp1 (cdr lexp2))) ; (6)     lexp2    )   )  ) ) 【質問】 ラムダ計算というもの自体初耳で,良く分からないまま作成したプログラムです.「E. 置換」の (1),(2),(3),(6) をそのままプログラムにしたつもりです.しかし,自由変数とか束縛変数とかいう概念を無視して作成したので,おそらく誤った動作をすると思います.また,(4),(5)に対応する処理をどのように記述したらよいのかが分かりません.誤りの指摘,アドバイスをお願いします.

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

    以下のようなコマンドライン引数を取得するシェルを書いたのですが 実行時にエラーになってしまいました。コマンド(第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 ←ここでエラー

  • シェルスクリプト(if文)

    bashにてシェルスクリプトを作成しています。 XXXX_111122222333_YYYYMMDD 111122222333 といった2パターンのファイル名から、「111122222333」の部分を取得したいのですが、if文の条件式で悩んでいます。 if [ expr length ${p9} -gt 13 ] then a=`echo $p9|cut -c 6-9` b=`echo $p9|cut -c 10-14` c=`echo $p9|cut -c 15-18` else a=`echo $p9|cut -c 1-4` b=`echo $p9|cut -c 5-9` c=`echo $p9|cut -c 10-13` fi これで実行すると too many arguments というエラーが出てしまいます。(結果も正しくありません) 基本的な部分が理解できていないかと思うのですが、宜しくお願いいたします。