シェルスクリプトでShiftを使用する目的は何ですか?

シェルスクリプトでShiftを使用する目的は何ですか?

私は次のスクリプトを見つけました。

#! /bin/bash                                                                                                                                                                                           

if (( $# < 3 )); then
  echo "$0 old_string new_string file [file...]"
  exit 0
else
  ostr="$1"; shift
  nstr="$1"; shift  
fi

echo "Replacing \"$ostr\" with \"$nstr\""
for file in $@; do
  if [ -f $file ]; then
    echo "Working with: $file"
    eval "sed 's/"$ostr"/"$nstr"/g' $file" > $file.tmp 
    mv $file.tmp $file
  fi  
done

彼らが使う線の意味は何ですかshift?スクリプトは少なくともパラメータで使用する必要があると思いますが…?

ベストアンサー1

shiftbashパラメータリストの先頭からパラメータを削除する組み込み関数。スクリプトに提供された3つの引数が$1、で$2使用できると仮定すると、$3呼び出しはnewをshift 生成します。 Aは2だけ新しいoldに変換されます。詳しくはこちらをご覧ください。$2$1shift 2$1$3

おすすめ記事