1

ユーザーの入力に基づいて他のスクリプトを呼び出す KSH インターフェイス スクリプトを作成しています。他のスクリプトは Encrypt と Decrypt です。これらのスクリプトはそれぞれパラメータを受け取ります。「-」+スクリプト名の最初の文字を使用する前にスクリプトを実行する人を見たことがあります。スクリプトでこれを行うにはどうすればよいですか? たとえば、私のスクリプトが menu と呼ばれ、ユーザーが入力した場合:menu -e *UserID Filename.txt*スクリプトが実行され、暗号化スクリプトが関連するパラメーターと共に実行されます。これまでのところ、私のスクリプトは暗号化/復号化スクリプト オプションをパラメーターとして受け取ります。これが私のスクリプトです:

#!/bin/ksh

#I want this parameter to become an 
action=$1

if [ $1 = "" ]
    then 
    print_message "Parameters not satisfied"

    exit 1 
fi 

#check for action commands

if [ $1 = "encrypt" ]
    then
    dest=$2
    fileName=$3
    ./Escript $dest $fileName
elif [ $1 = "decrypt" ]
    then
    outputF=$2
    encryptedF=$3
    ./Dscript $outputF $encryptedF
else 
    print "Parameters not satisfied. Please enter encrypt or decrypt plus-n arguments"

fi

助けてくれてありがとう!

4

1 に答える 1

1

パラメータを実行する別のスクリプトに自動的に変換する方法はありません。あなたがしていることは、あなたがそれをする方法とほぼ同じです。パラメーターを確認し、内容に基づいて、2 つの異なるスクリプトを実行します。

を使用してより適切に構造化することができます。また、最初のパラメーターを削除するをcase使用して、後のパラメーターを他のスクリプトに直接渡すことができます。何かのようなもの:"$@"shift

[ $# -ge 1 ] || (echo "Not enough parameters"; exit 1)

command=$1
shift
case $command in
    -e|--encrypt) ./escript "$@" ;;
    -d|--decrypt) ./dscript "$@" ;;
    *) echo "Unknown option $command"; exit 1 ;;
esac

-eこれは、単一の case ステートメント ( and )で照合する 2 つの異なる文字列を提供することで、短いオプションと長いオプションの両方を実装する方法も示して--encryptいます。、、などで-e*)始まる任意のオプションを許可するように、グロブを使用することもできますが、これは探しているものではない場合があります。-e-e-encrypt-elephant

于 2013-08-07T00:33:18.480 に答える