$@変数があります。

$@変数があります。

次のスクリプトを使用すると、ユーザーは --header を選択し、file* をファイル名として挿入して、すべての有効なファイルにヘッダーを追加できるようにします。

#!/bin/bash
case "$1" in
--header )
  for filename in "$@"
  do 
  sed -i -e '1 e cat header' "$filename"
  done
  ;;
--footer )
  footer=~/dev/sed/footer
  for filename in "$@"
  do
  cat "$footer" >> "$filename"
  done
  ;;
esac

./tool --header file* を実行するためにツールを実行すると、次のエラーが発生します: sed: 認識できないオプション '--header'

$ @変数が最初の変数入力(--header)と一致しようとしているため、これが発生することを知っていますが、それを停止する方法がわかりません。

ベストアンサー1

$ @から最初の要素を削除するには、を使用しますshift

#!/bin/bash
opt=$1
shift
case "$opt" in
    --header )
        for filename in "$@" ; do 
            sed -i -e '1 e cat header' "$filename"
        done
    ;;
    --footer )
        footer=~/dev/sed/footer
        for filename in "$@" ; do
            cat "$footer" >> "$filename"
        done
    ;;
esac

おすすめ記事