Я не могу проверить возвращаемые значения функционального теста; мужской тест мне не сильно помог.
#!/bin/bash test=$(test -d $1) if [ $test -eq 1 ] then echo "the file exists and is a directory" elif [ $test -eq 0 ] echo "file does not exist or is not a directory" else echo "error" fi
Попробуйте вместо
if test -d $1 then echo 'the file exists and is a directory' else echo 'the file doesn't exist or is not a directory' fi
Каждый раз, когда вы используете test в коде возврата test, Бог убивает котенка.
test
if test -d "$1"
или
if [ -d "$1" ]
$ (test -d $ 1) будет заменено тем, что выводит тест, а не кодом возврата Если вы хотите проверить его код возврата, используйте $?, например,
$?
test -d $1 test=$? if [ $test -eq 1 ] ...