содержимое xp cd не отображается [закрыто]

  1. вам даже не нужен if / elif.Вместо -h настройки help = true создайте функцию usage () , которая печатает справку по использованию и закрывает скрипт, -h ] может затем просто вызвать эту функцию.

  2. почему вы используете встроенный код Python для выполнения работы, которую легче было бы выполнить с помощью grep , sed или awk ? или jq

  3. ваш код все равно не будет работать. Кажется, вы запутались, что содержит $ data . Согласно справке и оператору case getopts, $ data содержит data / issueID .... но похоже, что вы предполагаете, что он содержит содержимое URL, полученного с помощью wget .

    На самом деле, похоже, что вы даже не используете этот -d data / issueID ... возможно, вам следует включить его в строку запроса в запросе wget ?

    или -d должно иметь имя файла в качестве аргумента? Судя по справочному сообщению, это маловероятно.


В любом случае, вот версия, которая устраняет большинство проблем (и, IMO, значительно улучшает читаемость сценария):

#!/bin/bash

URI='...whatever...'

usage() {
# print optional error message and help message and exit.

[ -z "$*" ] || printf "%s\n\n" "$*"
# or, if you don't want help printed with every error message:
# [ -z "$*" ] || printf "%s\n\nUse -h option for help.\n" "$*" && exit 1

cat >&2 <<__EOF__
----------jira options----------
Required:
  -d [data/issueID]
  -u [username] -> [username] is your JIRA username
  -p [password] -> [password] is your JIRA password

Optional:
  -q -> quiet, i.e. no output to console
  -h -> help menu
__EOF__

exit 1
}

quiet=''

#using getopts to parse options
while getopts ":hqd:u:p:" opt; do
  case $opt in
     h) usage ;; 
     q) quiet='true' ;;     
     d) data="$OPTARG" ;;
     u) username="$OPTARG" ;;
     p) password="$OPTARG" ;;
    \?) usage "Invalid option: -$OPTARG" ;;
     :) usage "Option -$OPTARG requires an argument." ;;
  esac
done

# check for required options

[ -z "$data" ]     && usage '-d is required'
[ -z "$username" ] && usage '-u is required'
[ -z "$password" ] && usage '-p is required'

# your embedded python overkill could easily be done with `sed`
# or `awk`.   or maybe `jq` as the wget output is json.
# but without a sample of the input I can't provide a guaranteed
# working example.  The awk script below is a first attempt at
# extracting the value of `customfield_10701`

wget -q --http-user="$username" \
        --http-passwd="$password" \
        --header='Content-Type: application/json' \
        -O -
        "$URI" |
  awk -F': ' '/"customfield_10701"/ {
                gsub(/[",]/,"",$2);
                print $2
              }' > branchversion.txt

# alternatively, if you have `jq` installed, try piping wget's
# output through something like `jq -r .customfield_10701` instead of awk.

#prints the branch version if the quiet option hasn't been set
if [ -z "$quiet" ]; then
  echo "-------------------------------------------"
  echo ""
  echo "The branch version for issue $data is:"
  cat branchversion.txt
  echo ""
fi
0
23.02.2014, 21:44
0 ответов

Теги

Похожие вопросы