次の構造のパラメータリストを受け取るスクリプトを作成したいと思います。
- 最初のパラメータ:ファイルまたはディレクトリ
- その他のパラメータ:システムのコマンド名(例
date
:pwd
、、、、、、)tail
head
ls
スクリプトは、最初の引数として受け取ったファイル/ディレクトリからすべてのコマンド(2番目の引数から始まる)を実行します。
このスクリプトを試しましたが、コマンドオプションは利用できません。-l -i -n
どうすればいいですか?
#!/bin/bash
name=$1
shift
for cmd in "$@"
do
if [ -e $name ]
then
echo Executing:$cmd
($cmd $name)2>/dev/null
if [ $? -ne 0 ]
then
echo error
fi
else
exit 7
fi
done
ベストアンサー1
getopts
それともgetopt
それが答えです。
getopts
たとえば、ショートカットを使用でき、-i
使いやすくなります。また、bashに組み込まれており、常に利用可能です。
getopt
などの長いパラメータを使用できる外部ツールであり、--input-file
使用するのは少し難しいです。これは外部ツールであり、理論的には存在できませんが...
ここで簡単なチュートリアルを読んでください: https://dustymabe.com/2013/05/17/easy-getopt-for-a-bash-script/