Как мне проверить мой сценарий bash, чтобы показать, что только 2 имени файла могут быть введены, когда пользователю предлагается или возникает ошибка с помощью оператора echo - PullRequest
0 голосов
/ 19 июня 2020
#!/bin/bash
# Ask for user to enter two filenames

echo Please Provide 2 filenames to compare

read file1 file2

# Check to see if 2 different filenames are not provided

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

С bash

#!/usr/bin/env bash

while read -rp 'Please enter 2 filenames to compare: ' -a file; do
  if ! (( ${#file[*]} == 2 )); then
    printf >&2 'You entered %s file, need 2 files, please try again!\n' "${#file[*]}"
  elif [[ ${file[0]} == ${file[1]} ]]; then
    printf >&2 'Both %s and %s are the same, please try again!\n' "${file[0]}" "${file[1]}"
  elif ! [[ -e ${file[0]} && -e ${file[1]} ]]; then
    printf >&2 'Either one or both of the given file does not exists, please try again!%s\n'
  else
    printf 'All ok!\n' && break
  fi
done

printf 'You entered %s and %s\n' "${file[@]}"
  • Продолжает l oop, он не выходит из скрипта, пока не будут выполнены условия.

  • Первое условие, если файл меньше или больше 2

  • Второе условие, если оба файла одинаковы (одинаковое имя файла).

  • Третье условие, если оба файла или один из них не существует.

  • Если выход из скрипта необходим, когда одно из условий не выполняется, добавьте exit 1 внутри блок elif (все они), ниже / после строки, где находится оператор printf.

0 голосов
/ 19 июня 2020
echo "Please Provide 2 filenames to compare"

read file1 file2
if [ "$file1" == "$file2" ]
then
  echo "ERROR: file names must be different."
  exit 1
fi

echo "Good stuff!"
# Bash returns result of "echo" function here, which is 0 (success)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...