Мене завжди дивує, що в папці /bin
є [
програма.
Це те, що називається, коли ми робимо щось на кшталт if [ something ]
:?
Викликаючи [
програму явно в оболонці, вона запитує відповідну ]
, і коли я надаю дужку закриття, вона, здається, нічого не робить, незалежно від того, що я вставляю між дужками.
Потрібно сказати, що звичайний спосіб отримати допомогу щодо програми не працює, тобто не працює і man [
не [ --help
працює.
man '['
для мене добре працює - або ви забули процитувати, [
або у вас є інше визначення поняття "твори".
[
оцінює його аргументи, тому вам потрібно мати пробіли між усіма ними. [ a=b ]
це не порівняння: воно завжди буде істинним (це єдина строка: "a = b", яка завжди оцінюється як істина ). А вам слід обмежити кількість аргументів на 4 (навіть якщо останні реалізації дозволять отримати більше. . Обмеження до 4 робить його більш портативним. Наприклад: [ "a" = "b" ]
вже має 4 аргументи: "a" "=" "b" і не потрібний кінець тесту arg: "]"). Якщо вам потрібно більше: ланцюгові тести, наприклад:if [ "$Var_a" = "foo" ] && [ "$Var_b" = "bar" ] ; then : do something ; fi
!
сам по собі (без націски та без котирування) не буде замінено, а ще краще буде if ! [ ...
. Усі розгортання !
[
в bash
(і, можливо, інших оболонках) також є -буделін , і замість цього він може використовуватися /bin/[
. Також є test
-команда, яка в багатьох системах є символічним посиланням на /bin/[
(або навпаки) - а на інших - окрема команда.
[
посилається наtest
команду, хоча, ніexpr
, так і має бутиman test