История изменений
Исправление 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
Если хочешь 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
Если хочешь 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
Если хочешь 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
Если хочешь return code, то test вообще не нужен.
if pgrep chromium 1>/dev/null
then
echo 'open'
else
echo 'close'
fi