我正在创建一个KSH接口脚本,它将根据用户输入调用其他脚本。其他脚本是Encrypt and Decrypt。这些脚本中的每一个都接收参数。我之前看过有人在使用“ - ”+脚本名称的第一个字母之前执行脚本。我如何为我的脚本执行此操作?因此,例如,如果我的脚本被称为菜单,并且用户键入: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
感谢您的帮助!
答案 0 :(得分:1)
没有任何一种自动方式可以将参数转换为另一个脚本来运行;你正在做的事情就是如何做到这一点。检查参数,并根据内容运行两个不同的脚本。
您可以使用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
这也演示了如何通过在单个case语句(-e
和--encrypt
)中提供两个不同的字符串来实现短期和长期选项,以防这就是你要求的关于。你也可以使用整数,例如-e*)
来允许任何以-e
开头的选项,例如-e
,-encrypt
,-elephant
,尽管这可能不是你的意思正在寻找。