Shellスクリプトファイルの1行を一度に読み込む2つの書き方

1297 ワード

書き方一:
 
  
#!/bin/bash
while read line
do
      echo $line     #
done < urfile

書き方2:
 
  
#!/bin/bash
cat urfile | while read line
do
    echo $line
done

注意:上記のコードのurfileは読み込まれたファイルです
Shellテキストファイルの読み込み
方法1:コマンドで必要なコンテンツを取得し、変数に渡す
 
  
var1=$(grep -i "^root" /etc/passwd | cut -d: -f 3 2>/dev/null)   <= /etc/passwd root id

方法2:readコマンドでこのファイルを読み込む
 
  
while read wOne wTwo wThree
do
    [ -z $wOne ] && continue           #
    xxx=$wOne                                 #
done < /var/xxx/one.txt
echo "$xxx"                                    #

以下の方法ではコンテンツを抽出できません.しかし、出力できます.問題はbashのパイプの処理方法にあるようだ.
(bashはサブshell処理パイプ出力を生成する可能性があります).
 
  
cat /var/xxx/one.txt | while read wOne wTwo wThree
do
    [ -z $wOne ] && continue           #
    xxx=$wOne                                 #
done
echo "$xxx"                                    #