LINUX.ORG.RU

История изменений

Исправление Kroz, (текущая версия) :

а в мане написано чо должно работать именно так.

Покажи мне место в мане, где написано, что test воспринимает аргумент как команду и запускает её?

Ты сейчас на вход test пытаешься передать массив. Притом неправильный, именно об этом тебе и пытается сказать сообщение об ошибке.
Твой код аналогичен следующему:

ARR=( pgrep chromium 1>/dev/null )
if [ $ARR ] 
then
echo 'open'
else
echo 'close'
fi

И чего ты ожидаешь?

Если хочешь результат выполнения команды, то $() или `` (последнее не рекомендуется).
if [ "$( pgrep chromium )" ] 
then
echo 'open'
else
echo 'close'
fi
Но, скорее всего тебе нужно не это, так как ты направил stdout в /dev/null

Если хочешь return code, то test вообще не нужен.
if pgrep chromium 1>/dev/null
then
echo 'open'
else
echo 'close'
fi
Так чего тебе нужно?

P. S. И вообще, используй [[...]] вместо [...]

Исправление Kroz, :

а в мане написано чо должно работать именно так.

Покажи мне место в мане, где написано, что test воспринимает аргумент как команду и запускает её?

Ты сейчас на вход test пытаешься передать массив. Притом неправильный, именно об этом тебе и пытается сказать сообщение об ошибке.
Твой код аналогичен следующему:

ARR=( pgrep chromium 1>/dev/null )
if [ $ARR ] 
then
echo 'open'
else
echo 'close'
fi

И чего ты ожидаешь?

Если хочешь результат выполнения команды, то $() или `` (последнее не рекомендуется).
if [ "$( pgrep chromium )" ] 
then
echo 'open'
else
echo 'close'
fi
Но, скорее всего тебе нужно не это, так как ты направил stdout в /dev/null

Если хочешь return code, то test вообще не нужен.
if pgrep chromium 1>/dev/null
then
echo 'open'
else
echo 'close'
fi
Так чего тебе нужно?

Исправление Kroz, :

а в мане написано чо должно работать именно так.

Покажи мне место в мане, где написано, что test воспринимает аргумент как команду и запускает её?

Ты сейчас на вход test пытаешься передать массив. Притом неправильный, именно об этом тебе и пытается сказать сообщение об ошибке.
Твой код аналогичен следующему:

ARR=( pgrep chromium 1>/dev/null )
if [ $ARR ] 
then
echo 'open'
else
echo 'close'
fi

И чего ты ожидаешь?

Если хочешь результат выполнения команды, то $() или `` (последнее не рекомендуется).
if [ "$( pgrep chromium )" ] 
then
echo 'open'
else
echo 'close'
fi
Но, скорее всего тебе нужно не это, так как ты направил stdout в /dev/null

Если хочешь return code, то test вообще не нужен.
if pgrep chromium 1>/dev/null
then
echo 'open'
else
echo 'close'
fi
Так чего тебе нужно?

Исходная версия Kroz, :

а в мане написано чо должно работать именно так.

Покажи мне место в мане, где написано, что test воспринимает аргумент как команду и запускает её?

Ты сейчас на вход test пытаешься передать массив. Притом неправильный.

Твой код аналогичен следующему:

ARR=( pgrep chromium 1>/dev/null )
if [ $ARR ] 
then
echo 'open'
else
echo 'close'
fi

И чего ты ожидаешь?

Если хочешь результат выполнения команды, то $() или `` (последнее не рекомендуется).
if [ "$( pgrep chromium )" ] 
then
echo 'open'
else
echo 'close'
fi
Но, скорее всего тебе нужно не это, так как ты направил stdout в /dev/null

Если хочешь return code, то test вообще не нужен.
if pgrep chromium 1>/dev/null
then
echo 'open'
else
echo 'close'
fi
Так чего тебе нужно?