Решено: Да, это плохая практика. Спасибо @SatoKatsura за заполнение пробелов.
Правильное решение:
# ... blah ...
echo -n "A prompt for the user " >&2
read SOMEVAR >> /dev/null
# ... other stuff ...
printf "Results\t$RESULT\n"
Что более портативно и лучше и безопаснее.
Мой любимый способ (в~/.bashrc
):
function bassh() {
local host=${1:?'arg #1 missing: remote host'}
shift
local command="$@"
local usage="bassh REMOTE_HOST COMMAND"
[ "$command" ] || {
echo -e >&2 "[error] no command provided\nUsage: ${usage}"
return 1
}
ssh ${host} -t bash -ic "'${command}'"
}
Обратите внимание на параметр -t
для ssh, который принудительно выделяет псевдо--терминал, что позволяет избежать соответствующих предупреждений.
Тогда вы называете это просто:
$ bassh REMOTE_HOST ll