次のスクリプトを使用すると、ユーザーは --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