
シェルスクリプトを利用するときに変数を配列として扱えるという記述を見たので、
以下のようなシェルスクリプトを作成したのですが、エラーが出てきてしまいます。
端末で直接入力すると、正しく動作します。そのためなぜエラーとなるのかわかりません。
環境は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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Androidのスマホを 使ってます...
-
OS上で異常な音がして、動作が...
-
Internet Explorer でスクリプ...
-
シェルスクリプトで配列が使えない
-
ネットからファイルをデスクト...
-
brotherのドライバーがインスト...
-
マカフィー金庫 非表示または削...
-
Subversionでエラー
-
複数のフォルダの中のファイル...
-
Lhaplus(ラプラス)でのzip解凍...
-
デスクトップ上にポップアップを
-
Wordで作成した文章は自分以外...
-
Acrobatでパスワードを設定した...
-
サーバー証明書をインストール...
-
エラーが出てインストールが出...
-
エクセル2016で ファイルを開い...
-
特定の事をするとPCからビー(...
-
Windows10で「映画&テレビ」を...
-
isoファイルにレイヤーブレーク...
-
内臓ウィルスソフトの削除から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OS上で異常な音がして、動作が...
-
スクリプトエラーの発生とは
-
デパックの意味、教えてください。
-
Internet Explorer でスクリプ...
-
シェルスクリプトで配列が使えない
-
Excel2007 IFERROR 他のバー...
-
Androidのスマホを 使ってます...
-
VBA LoadPictureで原因不明のエ...
-
IE6にしたら、タグを使える...
-
コンピューターにiertutil.dll...
-
msnメッセンジャー
-
フォルダーを消去できない。(...
-
エラーがでて強制終了になります
-
apache2のエラーページを変更し...
-
予期せぬ理由で終了…TへT
-
切り替え?!
-
wordでエラー
-
iTuneが急に使えなくなりました。
-
スプリクトエラーについて
-
zoomfwu.dllをプログラムを入れ...
おすすめ情報