Как передать аргументы моим функциям в скрипте zsh / bash? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь объединить эти две функции в скрипте. Идея состоит в том, чтобы передать флаги -E для шифрования и -D для дешифрования. Пока что флаги работают. Я получаю разные способы шифрования, дешифрования и помощи. Проблема: функции не получают аргументы, и я каждый раз получаю сообщение об использовании. Как передать аргументы функциям? например:

./cript.zsh -E filetoencript out.des3
#!/usr/bin/env zsh

# TODO, make it a script. Flags -E to encrypt -D to decrypt.
# Usage: $1 = input $2 = output
function encrypt() {
  if [ -z "$1" ]; then
    echo Usage: encrypt '<infile>' '[outfile]'
    return
  fi
  if [ -z "$2" ]; then
    out="$1".des3
  else
   
...

}

# Usage: $1 = input $2 = output
function decrypt() {
  if [ -z "$1" ]; then
    echo Usage: decrypt '<infile>' '[outfile]'
    return
  fi
  if [ -z "$2" ]; then
    
...

}

function main() {
# -E = encrypt
# -D = decrypt
# FIXME
while getopts ":E:D:" opt; do
  case $opt in
    E)
        encrypt
        ;;
    D)
        decrypt
        ;;
    *)
        help
        exit 1
        ;;
  esac
done
}

main "$@"

1 Ответ

0 голосов
/ 10 июля 2020

Решение:

function main() {
# -E = encrypt
# -D = decrypt
while getopts ":E:D:" opt; do
  case $opt in
    E)
        shift
        encrypt "$@"
        ;;
    D)
        shift
        decrypt "$@"
        ;;
    *)
        help
        exit 1
        ;;
  esac
done
}
...