Успешная команда командной строки Linux

Мне нужно проверить, что выполненная команда успешна или нет, я разместил ниже код в test.sh, запустив ее, указав содержимое /home но есть предупреждение

 ./test.sh: 3: ./test.sh: [[: not found 

Что не так в команде ниже

 #!/bin/sh ls /home/ if [[ "$?" != 0 ]]; then echo "Commnad Error" else echo "Commnad Success" fi 

По ошибке:

 ./test.sh: 3: ./test.sh: [[: not found 

Ваш /bin/sh не является bash и [[ является bash-specific. Используйте одиночную скобку [ или команду test самостоятельно.
А также используйте -ne для числовых условных -ne . != будет работать в вашем конкретном случае, но это плохая практика.

Ошибка в том if [[ "$?" != 0 ]]; then if [[ "$?" != 0 ]]; then

сравнение числа не производится с использованием != Вместо этого -ne предполагается использовать.

Читайте здесь, чтобы получить числовое сравнение

Кроме того, правильный sytax для статуса последнего исполняемого кода завершения команды – $? без кавычек.

if [[ $? -ne 0 ]]; then

Я думаю, вы используете dash для выполнения сценария, потому что /bin/sh является link поэтому вы можете вместо этого использовать bash например, #!/bin/bash то это предупреждение

У Dash нет [[ , только [ . Но даже с [ , есть причины предпочесть, if your_command по your_command; if [ $? = 0 ] your_command; if [ $? = 0 ] your_command; if [ $? = 0 ] . (Первый более простой, быстрый и устойчивый к отказам в режиме set -e ).