私はシェルスクリプトにかなり慣れていないので、少し混乱し、これに対する解決策を見つけることができなかったようです. いくつかの引数を取ることができるシェルスクリプトがあるとしましょう。例として、次のように呼び出すことができます。
myscript -a valA -b valB -c valC -d valD 一部/ディレクトリ
ここで、これらの引数の一部はスクリプト自体用であり、他の引数はスクリプト内で呼び出されるコマンド用です。したがって、この場合、-a、-d、およびディレクトリはスクリプト用であり、それ以外はすべてコマンド用です。だから私はこのようなことをしたい:
args=''
if [ $# == 0 ]
then
echo "No arguments found!"
exit 1
fi
while [ "$2" ]
do
if [ $1 == '-a' ]
then
#some process here
shift 2
elif [ $1 == '-d' ]
then
#some process here
shift 2
else
#add the argument to args
shift
fi
done
directory=$1
for file in $directory/*.txt
do
#call 'someCommand' here with arguments stored in args + $file
done
やってみました
args="$args $1"
次に、実行するコマンドを呼び出します
someCommand "$args $file"
しかし、someCommand は、全体が 1 つの引数であると考えているようです。
また、私のスクリプトの残りの部分に問題がある場合は、遠慮なく指摘してください。動作しているように見えますが、いくつかのまれなケースを見逃していたり、予期しない動作につながる可能性のあることを行ったりしている可能性が非常に高いです。
ありがとう!