シェルスクリプトを利用するときに変数を配列として扱えるという記述を見たので、
以下のようなシェルスクリプトを作成したのですが、エラーが出てきてしまいます。
端末で直接入力すると、正しく動作します。そのためなぜエラーとなるのかわかりません。
環境はubuntu 10.10、
GNU bash, バージョン 4.1.5(1)-release (i686-pc-linux-gnu)
です。
----------------------
#!/bin/sh
list=(`ls`)
echo ${list[0]}
----------------------
3:Syntax error: "(" unexpected
No.2ベストアンサー
- 回答日時:
ディストリビューション等によっては、 shがbashへのリンクになっている場合もあります。
その場合、質問のスクリプトで動作します。が、どうやら、あなたの環境ではshは拡張されていない元々の B-sh相当のもののようです。
配列はB-shそのものには無く、ksh,bash等の拡張版でのみ使えます。
#!/bin/bash
にしたら動くのではないでしょうか。(bashのパスが違っていたらそれに合せて)
> シェルスクリプトを利用するときに変数を配列として扱える
シェルスクリプトにも大きく B-shとC-shがあり、それぞれに本来の仕様(sh,csh)と、拡張版(ksh,bash,zsh,tcsh等)があります。
それぞれで詳細が違いますので、単純に考えないようにしましょう。
No.1
- 回答日時:
そのエラーは、シンタックスエラーですよね。
書式が違う場合と、括弧など足りなかったりする場合にでるエラーです。
まず、シェルの種類の勉強してください。
GNU bash,
となっていますが、スクリプトを見ると、SH ですね。これは互換で装備されているB-Shellを指しています。自分ではBASHを実行しているつもりが、実はUNIX時代のB-Shellを使用しています。もちろんエリアスなのでリンクしていなければですが。
次に、B-Shellの書式では ( ) は出てきません。
これは、C-Shell, K-Shell
しかありません。たぶん K-Shellの文献をよんだのでは。よくK-Shellを推奨している文献だと、B-Shellと混合して記載してあるのがみかけます。わざとなのか、本人がよくわかっていないのか? いずれにせよ。
B-Shellでの配列はありません。また () もありません。両方使えるのは
KSH
です。
http://homepage3.nifty.com/owl_h0h0/unix/job/UNI …
http://oshiete.goo.ne.jp/qa/1590859.html
http://homepage2.nifty.com/t-1000/linux/shell_ar …
ちなみに
#!/bin/besh
です
シェルスクリプトを使う方法として
#!/bin/sh
とまず書くというふうに、教えているサイトがあってこの様な問題が発生してしまいました。
おかげで#!/bin/beshがどのシェルでシェルスクリプトをまわすのか、という宣言であることがわかりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(プログラミング・Web制作) Linuxについて質問です。 引数に指定されたアクセスログのファイルからアクセス数が多い順に上位3つ 1 2023/02/03 03:46
- UNIX・Linux Linuxのbash環境下です。 1 2022/11/27 12:31
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- その他(プログラミング・Web制作) linuxについて質問です 1 2023/02/06 19:55
- その他(プログラミング・Web制作) ログインシェル時のSHELL環境変数 1 2022/06/08 19:21
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をdiff.shとして、以下のように2つのテキストフ 1 2023/02/03 20:06
- その他(プログラミング・Web制作) test([)コマンドによる条件判定 2 2022/08/10 12:28
- UNIX・Linux デフォルト値のパラメータ展開 1 2022/08/12 17:34
- UNIX・Linux Linuxについて2つ質問したいです。 ① シェルスクリプト名をawk1.shとして、指定されたデー 1 2023/02/03 03:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OS上で異常な音がして、動作が...
-
Androidのスマホを 使ってます...
-
BAD_POOL_CALLERと表示されて・...
-
Excel2007 IFERROR 他のバー...
-
Internet Explorerスクリプトエ...
-
Outlook2003のエラー。。。
-
他ブックからのシートコピーの...
-
ネットからファイルをデスクト...
-
身に覚えのないフォルダとファイル
-
brotherのドライバーがインスト...
-
ウイルスセキュリティーの再エ...
-
Windows10で「映画&テレビ」を...
-
デスクトップにファイルを保存...
-
Gmailの添付ファイルがダウンロ...
-
歌詞をコピペするには
-
Excelが開けるということは、マ...
-
isoファイルにレイヤーブレーク...
-
快活クラブで株取引をしたいの...
-
プリンタードライバーがアンイ...
-
7ギガ(7G)ってどのぐらいの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OS上で異常な音がして、動作が...
-
シェルスクリプトで配列が使えない
-
Androidのスマホを 使ってます...
-
Excel2007 IFERROR 他のバー...
-
VBA LoadPictureで原因不明のエ...
-
デパックの意味、教えてください。
-
IIS7.5からIIS10への移行でDLL...
-
qmakeコマンド後のmakeでエラー...
-
急にPCの電源が落ちる
-
メッセージ:「この操作を完了...
-
macでCDを焼く際のエラーコード
-
スクリプトエラーの発生とは
-
至急 win8で予期しないエラー...
-
active desktopの修復について
-
Windows 8のPCでスクリプトエラ...
-
エクスプローラーがローカルの...
-
ubuntu18.04LTSからwindowsのデ...
-
sshdがBindで使用中のエラー
-
BAD_POOL_CALLERと表示されて・...
-
アクセスのエラーについて。。。
おすすめ情報