シェルスクリプトのローカル変数、グローバル変数の取り扱いで迷っています。
----------------
#!/bin/bash
count=0
cat file | while read i
do
count=`expre $count + 1 `
done
echo $count
----------------
fileの中身をcatで流して、それを一行ずつ読み込みます。
そのつど、count の値を増やしていくようにしたいのですが、最後の出力値は0となります。
cat→whileで読み込ませて処理している間はローカル変数として扱われているのでしょうか。
またそうであるならば、シェルスクリプトでグローバル変数を明示的に宣言するにはどうのようにすればいいのでしょうか。
No.1ベストアンサー
- 回答日時:
まず、bashの変数は何も指定しなければ、グローバル変数として
扱われます。
ですので、グローバル変数をわざわざ宣言する方法はありません。
ローカル変数は、関数の中では使用可能ですが、'local'で宣言
しなくてはなりません。
下記ページの局所変数の項目を参照してください。
http://www.fireproject.jp/feature/bash/basic/var …
それでは、なぜ、skip_jackさんのスクリプトで、
$countの値が変わらなかったのか、というと、
パイプの後でwhile文を起動するときにサブシェルが
起動されてしまったからです。
下記参照
http://dsas.blog.klab.org/archives/50703133.html
というわけで、上記ページのコメントに書かれている
名前つきパイプの手法を使って、
次のようにしてみたらどうでしょう。
#!/bin/bash
count=0
while read i
do
count=`expr $count + 1 `
done < <(cat file)
echo $count
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Visual Basic(VBA) 1つの入力フォルダの値を読み込み、3分割をして新しい変数に代入する方法を教えていただきたいです。 読 4 2022/10/17 20:52
- Visual Basic(VBA) Sheet1の出荷日と品名が並んだ表からSheet2の品名別出荷日別の個数一覧表を作っています。 オ 3 2022/12/01 23:54
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Ruby プログラミング 3 2023/06/09 14:30
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batである文字列内に特定の文字...
-
スクリプト中のexportコマンド...
-
Cシェルで標準エラー出力への...
-
exprで四則演算をする際に変数...
-
シェルで and/or の優先順位に...
-
cshの条件式について教えてくだ...
-
shellスクリプトから別のshell...
-
if文について
-
シェルスクリプトの変数の制限?
-
sh スクリプト ipアドレス形式...
-
Bシェル 文字列に含まれる特...
-
bashスクリプト
-
TOPコマンドで表示するCPU使用...
-
Dirコマンドでフォルダ内ファイ...
-
スクリプトのエラー「unexpecte...
-
SONYの音楽ソフト「x-アプリ」...
-
bashでシングルクォート内の変...
-
エクセルの表にヘンな枠が・・・
-
テキストファイルから最終行の抽出
-
LD_LIBRARY_PATHって?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batである文字列内に特定の文字...
-
スクリプト中のexportコマンド...
-
shellスクリプトから別のshell...
-
bashスクリプト
-
シェルスクリプトの変数の制限?
-
kshでのNULLの比較
-
【sh】tee コマンドの代替方法
-
ファイルから文字列を読み込む...
-
シェルで and/or の優先順位に...
-
if文について
-
Bシェル 文字列に含まれる特...
-
Cシェルで標準エラー出力への...
-
cshの条件式について教えてくだ...
-
【シェルスクリプト】whileルー...
-
Cシェルプログラムで、あるディ...
-
ログインシェル時のSHELL環境変数
-
rubyで、バッククォートの中に...
-
【シェルスクリプト】 ローカル...
-
sh スクリプト ipアドレス形式...
-
シェルスクリプトでうるう年判定
おすすめ情報