У меня есть скрипт bash, в котором есть эта функция:
function start_vi()
{
echo "Please enter a file name with complete path to open in vi:"
read input_file
if [ -d "$input_file" ]
then
echo "You entered a directory."
echo "Please try again and enter a readable/writable file."
fi
grep_var="file $input_file | grep -c data"
if [ $? -eq 0 ]
then
vi $input_file
else
echo "File not found or invalid file type. Please try again."
fi
}
По большей части функция работает нормально. Моя проблема в том, что два оператора if работают нормально независимо, например, если я закомментирую одно из них, тест работает, и он делает то, что я хочу. Но вместе, как написано, например, когда я набираю каталог в приглашении, vi открывает его как файл, где тест должен возвращать эхо, сообщающее, что это каталог, как это происходит при работе в одиночку.
Есть идеи, почему это так? Я все еще относительно новичок в написании сценариев bash, так что, наверное, это легко для профессионалов, но я уже некоторое время бьюсь головой о стену.
Заранее спасибо.