The UNIX and Linux Forums  
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
bashの-の遅延展開変数 scandora シェルプログラミングとスクリプティング 3 2009年2月18日 05:59午前
展開、 $ #もbashのスクリプトでワイルドカード展開後の高さ zoo591 シェルプログラミングとスクリプティング 3 2008年7月25日 02:50午前
パターンの拡大問題 njoshi シェルプログラミングとスクリプティング 5 2007年4月24日 12:28午後
AIXの拡張のCD almuwatta AIX 0 2005年6月23日 05:07午後
のHP - UXへのksh -変数を拡大 dangral UNIXのダミー質問と回答のため 4 2005年2月8日 12:35午後

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2009年7月2日
mglenney mglenney is offline
登録ユーザー
  
 

参加日: 2009年6月
投稿: 85
bashのブレースの拡大問題

私は、サーバープールのオプションに対して、スクリプトを実行するまでのスクリプトをしている。このオプションは、カンマ区切りのリスト(例として、与えられる。 - pの201204301 ) 。

私はevalを使用していると拡張支柱の配列にはプールの数を取得します。プールの場合以外は1号が与えられますが正常に動作します。ここでは、コード:

コード:
while [ "$1" != "" ]; do
  case $1 in
    -p  )               shift
                        pools=($(for i in $(eval echo {$1}); do echo $i; done | sort))
                        ;;
複数のプールを指定:

コード:
[me@server bin]$ ./project_nunenhoffen.sh -p 201,202
+ '[' -p '!=' '' ']'
+ case $1 in
+ shift
+ pools=($(for i in $(eval echo {$1}); do echo $i; done | sort))
++ sort
+++ eval echo '{201,202}'
++++ echo 201 202
++ for i in '$(eval echo {$1})'
++ echo 201
++ for i in '$(eval echo {$1})'
++ echo 202
+ shift
+ '[' '' '!=' '' ']'
もし1つのプールを指定:

コード:
[me@server bin]$ ./project_nunenhoffen.sh -p 201
+ '[' -p '!=' '' ']'
+ case $1 in
+ shift
+ pools=($(for i in $(eval echo {$1}); do echo $i; done | sort))
++ sort
+++ eval echo '{201}'
++++ echo '{201}'
++ for i in '$(eval echo {$1})'
++ echo '{201}'
+ shift
+ '[' '' '!=' '' ']'
もし1つのプールの周囲には、かっこ悪いの葉が与えられています。コンマがあるかどうかは、ある場合に存在する場合よりも、よりよい解決策だが、かと思いましてではないが別のプロセスを私は見ては$ 1のテストを行う可能性がある。場合にはどうすれば配列には、プールの番号を取得する処理もwondering ( eval &拡張支柱)を行うための最善の方法だった。

ありがとう、

マイクト
  #2固定リンク)  
Old 2009年7月2日
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
モデレータ
  
 

参加日: 2005年2月
場所:ボストン、修士
投稿数:5119
コード:
#!/bin/ksh

list='201,204,301'

IFS=,; set -A array ${list}

typeset -i i=0
while (( $i < ${#array[*]} ))
do
  echo "${array[$i]}"
  ((i=i+1))
done;
  #3固定リンク)  
Old 2009年7月2日
mglenney mglenney is offline
登録ユーザー
  
 

参加日: 2009年6月
投稿: 85
引用:
当初の投稿 vgersh99 View Post
コード:
#!/bin/ksh

list='201,204,301'

IFS=,; set -A array ${list}

typeset -i i=0
while (( $i < ${#array[*]} ))
do
  echo "${array[$i]}"
  ((i=i+1))
done;
私は持っていない設定のためのオプションと、私の言うことができますから、持っていないと同等のbashを使っている。私はこれは基本的に私はあなたの例では1行で何が必要ですがやったなあ。

今のところ私はこの方法で問題を解決したのでお知らせします:

コード:
while [ "$1" != "" ]; do
  case $1 in
    -p  )               shift
                        case $1 in
                          *,* ) pools=( $(for i in $(eval echo {$1}); do echo $i; done | sort) ) ;;
                          *   ) pools=$1 ;;
                        esac
                        ;;
  #4固定リンク)  
Old 2009年7月2日
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
モデレータ
  
 

参加日: 2005年2月
場所:ボストン、修士
投稿数:5119
コード:
#!/bin/bash

list='201,204,301'

IFS=,; array=(${list})

typeset -i i=0
while (( $i < ${#array[*]} ))
do
  echo "${array[$i]}"
  ((i=i+1))
done;
  #5固定リンク)  
Old 2009年7月2日
mglenney mglenney is offline
登録ユーザー
  
 

参加日: 2009年6月
投稿: 85
パーフェクト。私はそれを解決する上での拡張を使用して支柱に掛けていた。

ありがとうございます! !
  #6固定リンク)  
Old 2009年7月3日
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
シェルプログラマは、著者
  
 

参加日: 2007年3月
場所:トロント、カナダ
投稿数: 2361
引用:
当初の投稿 vgersh99 View Post
コード:
#!/bin/bash

list='201,204,301'

IFS=,; array=(${list})

typeset -i i=0
while (( $i < ${#array[*]} ))
do
  echo "${array[$i]}"
  ((i=i+1))
done;

すべての上記に相当します:

コード:
list='201,204,301'
array=( ${list//,/ } )
printf "%s\n" "${array[@]}"
Reply

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 03:57午前


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0