-r
, поэтому нет необходимости считывать
его. getopts
указана наоборот. Решение:
#!/bin/bash
# Process command line.
# Store r-flag's argument in ch,
# Exit on invalid flags.
while getopts 'r:' opt; do
case "$opt" in
r) ch="$OPTARG" ;;
*) echo 'Error' >&2
exit 1 ;;
esac
done
# Make sure we got r-flag.
if [[ -z "$ch" ]]; then
echo 'Missing -r flag' >&2
exit 1
fi
# Shift positional parameters so that first non-flag argument
# is left in $1.
shift "$(( OPTIND - 1 ))"
if [[ -f "$1" ]] || [[ -z "$1" ]]; then
# $1 is a (regular) file, or unset.
# Use file for input, or stdin if unset.
cat "${1:--}" | tr -d "$ch"
else
# $1 is set, but not a filename, pass it as string to tr.
tr -d "$ch" <<<"$1"
fi
Это будет использоваться как
$ ./script -r 'a-z' file
(удаляет все символы нижнего регистра в файле
)
$ ./script -r 'a-z' "Hello World!"
(удаляет все символы нижнего регистра в заданной строке, если это не происходит быть именем файла)
$ ./script -r 'a-z'
(удаляет все символы нижнего регистра в стандартном потоке ввода)
В случае, если эта проблема все еще не решена... запуск tomcat с https через порт 443 требует запуска приложения от имени пользователя root. для pentaho 7.0+ это больше невозможно, поэтому вам придется придерживаться обходных путей (порты < 1024 являются портами с ограниченным доступом, пользователи без полномочий root не могут использовать их без разрешения ), например authbind.