diff --git a/bin/pt-ioprofile b/bin/pt-ioprofile index 28463753..24f718e7 100755 --- a/bin/pt-ioprofile +++ b/bin/pt-ioprofile @@ -119,19 +119,22 @@ usage_or_errors() { echo echo "Options and values after processing arguments:" echo - for opt in $(ls "$PO_DIR"); do - local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" - local varvalue="${!varname}" - if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then - if [ "$varvalue" -a "$varvalue" = "yes" ]; - then varvalue="TRUE" - else - varvalue="FALSE" + ( + cd "$PO_DIR" + for opt in *; do + local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" + eval local varvalue=\$$varname + if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then + if [ "$varvalue" -a "$varvalue" = "yes" ]; + then varvalue="TRUE" + else + varvalue="FALSE" + fi fi - fi - printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" - echo - done + printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" + echo + done + ) return 1 fi @@ -191,7 +194,7 @@ parse_options() { _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi - _parse_command_line "$@" + _parse_command_line "${@:-""}" } _parse_pod() { @@ -283,7 +286,7 @@ _eval_po() { _parse_config_files() { - for config_file in "$@"; do + for config_file in "${@:-""}"; do test -f "$config_file" || continue while read config_opt; do @@ -317,7 +320,7 @@ _parse_command_line() { local required_arg="" local spec="" - for opt in "$@"; do + for opt in "${@:-""}"; do if [ "$opt" = "--" -o "$opt" = "----" ]; then HAVE_EXT_ARGV=1 continue diff --git a/bin/pt-mysql-summary b/bin/pt-mysql-summary index 27523f5b..584fbac2 100755 --- a/bin/pt-mysql-summary +++ b/bin/pt-mysql-summary @@ -121,19 +121,22 @@ usage_or_errors() { echo echo "Options and values after processing arguments:" echo - for opt in $(ls "$PO_DIR"); do - local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" - local varvalue="${!varname}" - if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then - if [ "$varvalue" -a "$varvalue" = "yes" ]; - then varvalue="TRUE" - else - varvalue="FALSE" + ( + cd "$PO_DIR" + for opt in *; do + local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" + eval local varvalue=\$$varname + if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then + if [ "$varvalue" -a "$varvalue" = "yes" ]; + then varvalue="TRUE" + else + varvalue="FALSE" + fi fi - fi - printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" - echo - done + printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" + echo + done + ) return 1 fi diff --git a/bin/pt-sift b/bin/pt-sift index 7953239b..0310aea8 100755 --- a/bin/pt-sift +++ b/bin/pt-sift @@ -588,7 +588,7 @@ main() { # possible to include without executing, and thus test. if [ "${0##*/}" = "$TOOL" ] \ || [ "${0##*/}" = "bash" -a "$_" = "$0" ]; then - main "$@" + main "${@:-""}" fi # ############################################################################ diff --git a/bin/pt-stalk b/bin/pt-stalk index f92f8263..b571d7e3 100755 --- a/bin/pt-stalk +++ b/bin/pt-stalk @@ -121,19 +121,22 @@ usage_or_errors() { echo echo "Options and values after processing arguments:" echo - for opt in $(ls "$PO_DIR"); do - local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" - local varvalue="${!varname}" - if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then - if [ "$varvalue" -a "$varvalue" = "yes" ]; - then varvalue="TRUE" - else - varvalue="FALSE" + ( + cd "$PO_DIR" + for opt in *; do + local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" + eval local varvalue=\$$varname + if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then + if [ "$varvalue" -a "$varvalue" = "yes" ]; + then varvalue="TRUE" + else + varvalue="FALSE" + fi fi - fi - printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" - echo - done + printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" + echo + done + ) return 1 fi @@ -193,7 +196,7 @@ parse_options() { _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi - _parse_command_line "$@" + _parse_command_line "${@:-""}" } _parse_pod() { @@ -285,7 +288,7 @@ _eval_po() { _parse_config_files() { - for config_file in "$@"; do + for config_file in "${@:-""}"; do test -f "$config_file" || continue while read config_opt; do @@ -319,7 +322,7 @@ _parse_command_line() { local required_arg="" local spec="" - for opt in "$@"; do + for opt in "${@:-""}"; do if [ "$opt" = "--" -o "$opt" = "----" ]; then HAVE_EXT_ARGV=1 continue @@ -1197,7 +1200,7 @@ if [ "${0##*/}" = "$TOOL" ] \ # Parse command line options. We must do this first so we can # see if --daemonize was specified. mk_tmpdir - parse_options "$0" "$@" + parse_options "$0" "${@:-""}" # Verify and set TRIGGER_FUNCTION based on --function. if ! set_trg_func "$OPT_FUNCTION"; then @@ -1264,7 +1267,7 @@ if [ "${0##*/}" = "$TOOL" ] \ # the child's PID. make_pid_file "$OPT_PID" $$ - main "$@" >"$OPT_LOG" 2>&1 & + main "${@:-""}" >"$OPT_LOG" 2>&1 & # Update PID file with the child's PID. # The child PID is $BASHPID but that special var is only @@ -1273,7 +1276,7 @@ if [ "${0##*/}" = "$TOOL" ] \ echo "$!" > "$OPT_PID" else [ "$OPT_STALK" ] && make_pid_file "$OPT_PID" $$ - main "$@" + main "${@:-""}" fi fi diff --git a/bin/pt-summary b/bin/pt-summary index f60f8387..6c713804 100755 --- a/bin/pt-summary +++ b/bin/pt-summary @@ -128,19 +128,22 @@ usage_or_errors() { echo echo "Options and values after processing arguments:" echo - for opt in $(ls "$PO_DIR"); do - local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" - local varvalue="${!varname}" - if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then - if [ "$varvalue" -a "$varvalue" = "yes" ]; - then varvalue="TRUE" - else - varvalue="FALSE" + ( + cd "$PO_DIR" + for opt in *; do + local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" + eval local varvalue=\$$varname + if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then + if [ "$varvalue" -a "$varvalue" = "yes" ]; + then varvalue="TRUE" + else + varvalue="FALSE" + fi fi - fi - printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" - echo - done + printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" + echo + done + ) return 1 fi diff --git a/lib/bash/parse_options.sh b/lib/bash/parse_options.sh index 40cc144d..c1999cfa 100644 --- a/lib/bash/parse_options.sh +++ b/lib/bash/parse_options.sh @@ -118,21 +118,24 @@ usage_or_errors() { echo echo "Options and values after processing arguments:" echo - for opt in $(ls "$PO_DIR"); do - local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" - local varvalue="${!varname}" - if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then - # Typeless option, like --version, so it's given/TRUE - # or not given/FALSE. - if [ "$varvalue" -a "$varvalue" = "yes" ]; - then varvalue="TRUE" - else - varvalue="FALSE" + ( + cd "$PO_DIR" + for opt in *; do + local varname="OPT_$(echo "$opt" | tr a-z- A-Z_)" + eval local varvalue=\$$varname + if ! grep -q "type:" "$PO_DIR/$opt" >/dev/null; then + # Typeless option, like --version, so it's given/TRUE + # or not given/FALSE. + if [ "$varvalue" -a "$varvalue" = "yes" ]; + then varvalue="TRUE" + else + varvalue="FALSE" + fi fi - fi - printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" - echo - done + printf -- " --%-30s %s" "$opt" "${varvalue:-(No value)}" + echo + done + ) return 1 fi