Я пытаюсь сделать простую проверку, если последнее выражение было успешным:
if [ $? -ne 0 ]; then
chrome a.html
fi
и эта форма работы. Однако, когда я пытаюсь сделать:
if [ $? != "0" ]; then
chrome a.html
fi
или без "", он всегда выполняется. Я не уверен, почему это происходит, поскольку следующие работы:
if [ $(id -u) != "0" ]; then
#You are not the superuser
echo "You must be superuser to run this" >&2
exit 1
fi
Я бы подумал, что $? и $ (id -u) возвращают целое число, и, таким образом, сравнение: = «0» и -ne 0 должны работать. Однако, кажется, $? не является тем же типом, что и $ (id -u). Любое объяснение?
«$?» - это код выхода последней выполненной команды, а не выход 'id -u' – anubhava
Да, я знаю, я просто использовал $ (id -u) в качестве сравнения, потому что это возвращает число, а также $? – mtveezy
Вы должны окружать переменные в «компенсировать переменное расширение, иначе вы могли бы столкнуться с некоторыми проблемами в будущем». – Lando