Если вы хотите, чтобы «либо» стало пустым, попробуйте ИЛИ ||
?
if [ -z "$var" ] || [ -z "$var1" ]
... Неужели это так просто?
Вам также может быть интересно узнать, как Buildroot 2018.02 решает эту проблему.
Всякий раз, когда вы используете initramfs(BR2_TARGET_ROOTFS_INITRAMFS=y
)или initrd (BR2_TARGET_ROOTFS_CPIO=n
), он добавляет следующее /init
к вашим rootfshttps://github.com/buildroot/buildroot/blob/2018.02/fs/cpio/init
#!/bin/sh
# devtmpfs does not get automounted for initramfs
/bin/mount -t devtmpfs devtmpfs /dev
exec 0</dev/console
exec 1>/dev/console
exec 2>/dev/console
exec /sbin/init "$@"
Копия сделанаhttps://github.com/buildroot/buildroot/blob/2018.02/fs/cpio/cpio.mk:
# devtmpfs does not get automounted when initramfs is used.
# Add a pre-init script to mount it before running init
define ROOTFS_CPIO_ADD_INIT
if [ ! -e $(TARGET_DIR)/init ]; then \
$(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \
fi
endef
Также полезно знать, что путь инициализации /init
для initramfs, в отличие от /sbin/init
в противном случае:Что может привести к тому, что передача init=/path/to/program в ядро не запустит программу как init?