Это работает как рекламируется, но вам нужен дополнительный параметр, чтобы делать то, что вы хотите:
read -e -i "$SUGGESTION" INPUT
К сожалению, это доступно только в Bash 4.
Если у вас есть компилятор C и доступен readline
, вот вам быстрый способ взлома. Сохраните следующее в myread.c
(или что-то еще) и скомпилируйте его (вам нужно связать с readline
). Для GCC это будет: gcc -o myread myread.c -lreadline
.
#include <stdio.h>
#include <readline/readline.h>
int main(int argc, char **argv)
{
if (argc != 2)
return 1;
// stuff the input buffer with the default value
char *def = argv[1];
while (*def) {
rl_stuff_char(*def);
def++;
}
// let the user edit
char *input = readline(0);
if (!input)
return 1;
// write out the result to standard error
fprintf(stderr, "%s", input);
return 0;
}
Вы можете использовать это так:
myread "$SUGGESTION" 2> some_temp_file
if [ $? -eq 0 ] ; then
# some_temp_file contains the edited value
fi
Много возможностей для улучшения, но я думаю, это начало.