# Linux Script Note ## Check if string contains substring ### For Bash ```bash str="Hello, this is script" if [[ "$str" == *"script"* ]]; then echo "Find script" else echo "Cant find script" fi ``` ### For Sh ```sh str="Hello, this is script" result=$(echo $str | grep -i "script") if [ $result ]; then echo "Find script" else echo "Cant find script" fi ``` ## Script read variable ### For buildroot, post_image.sh in `make file` execute by this ```makefile target-post-image: $(TARGETS_ROOTFS) target-finalize @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \ $(call MESSAGE,"Executing post-image script $(s)"); \ $(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) ``` `BR2_ROOTFS_POST_IMAGE_SCRIPT` mean location of **post_image.sh** `foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT))` mean substitute `$(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT))` to `s` so `$(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep))` mean `$BR2_ROOTFS_POST_IMAGE_SCRIPT $BINARIES_DIR $BR2_ROOTFS_POST_SCRIPT_ARGS` <br> in **post_image.sh** variable `$1=$BINARIES_DIR `, `$2=$BR2_ROOTFS_POST_SCRIPT_ARGS` <br> in most case, `BR2_ROOTFS_POST_SCRIPT_ARGS`is `"xgs-iproc-arm32"`. then variable `$1=$BINARIES_DIR `, `$2="xgs-iproc-arm32"` <br> Sometimes, `BR2_ROOTFS_POST_SCRIPT_ARGS`may be `"arm64 helix5" ` then variable `$1=$BINARIES_DIR `, `$2="arm64"`, `$3="helix5"` get variable by each space ' '.