2015-07-30 4 views
0

Я хочу написать сценарий как для интерактивного, так и для пакетного использования. Если аргументы не предоставлены, скрипт будет запрашивать ввод пользователей.bash let переменная по умолчанию для ввода пользователем

В отличие от here пользователю не следует беспокоиться, если переменная уже определена аргументами.

Используя разложение параметра Я попытался это:

${FILE="$(echo "Please provide the file:" >&2 ; read a; echo $a)"} 

... но я всегда получаю ошибку command not found.

Любые предложения?

+0

Попробуйте следующий сценарий. echo «Введите свое имя»; читать имя; если [$ {# имя} -eq 0] затем эхо -e "\ NNAME: Хорст" еще эхо -e "\ NNAME: $ имя" фи – mrg

+0

Просто ответил на мой собственный: 'FILE = $ {FILE = "$ (echo" Пожалуйста, предоставьте файл: "> &2 ;, прочитанный a; echo $ a)"} ' Это своего рода двойная оценка, но она работает! – Horst

+0

Попробуйте следующее: echo $ {FILE = "$ (echo" Пожалуйста, предоставьте файл: "> &2 ; read a; echo $ a)"} – mrg

ответ

1

Я хотел бы написать

# earlier in program, $FILE may or may not be defined 

if [[ -z $FILE ]]; then 
    read -p "Please provide the file: " FILE 
fi 

Если вы действительно хотите, чтобы втиснуть его в одну строку, используйте : команды и синтаксис расширения присваивание

: ${FILE:=$(read -p "file?"; echo "$REPLY")} 

Примечание, не используйте ALL_CAPS_VARS: someday you'll use PATH и удивляйтесь, почему ваш скрипт нарушен.

+0

Вот что я искал! Я проверяю полдюжины переменных таким образом, поэтому однострочный - это единственное решение, позволяющее сохранить код кратким. – Horst

+0

. Я бы рекомендовал что-то промежуточное: '[[-z $ FILE]] && read -p" ... " File' –

0

Это должно быть

FILE="$(echo "Please provide the file:" >&2 ; read a; echo $a)" 

Вы пытаетесь выполнить команду вместо инициализации

${FILE="$(echo "Please provide the file:" >&2 ; read a; echo $a)"} 
Please provide the file: 
Mahesh 
-bash: Mahesh: command not found 
$ FILE="$(echo "Please provide the file:" >&2 ; read a; echo $a)" 
Please provide the file: 
mahesh 
$ echo $FILE 
mahesh 

 Смежные вопросы

  • Нет связанных вопросов^_^