电子商务网站建设与维护题库,wordpress时间中文版,企业做网站报价,十大电商平台-n作用
[ -n 字符串 ] or [ 字符串 ] 字符串的长度为非零#xff08;有内容#xff09;则为真。加-n与不加-n结果相同。
-z作用
[ -z 字符串 ] 字符串的长度为零则为真。 字符串为空即NULL时为真#xff0c;与上面的-n相反。
-f作用
[ -f FILE ] 如果 FILE 存在且是一…-n作用
[ -n 字符串 ] or [ 字符串 ] 字符串的长度为非零有内容则为真。加-n与不加-n结果相同。
-z作用
[ -z 字符串 ] 字符串的长度为零则为真。 字符串为空即NULL时为真与上面的-n相反。
-f作用
[ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
ros系统环境为ros2 foxy。
系统自带的包source的第一个系统脚本文件
/opt/ros/foxy/setup.bash
# copied from ament_package/template/prefix_level/setup.bashAMENT_SHELLbash# source setup.sh from same directory as this file
AMENT_CURRENT_PREFIX$(builtin cd dirname ${BASH_SOURCE[0]} pwd)
# trace output
if [ -n $AMENT_TRACE_SETUP_FILES ]; thenecho # . \$AMENT_CURRENT_PREFIX/setup.sh\
fi
. $AMENT_CURRENT_PREFIX/setup.sh通过在终端显示这个变量验证$AMENT_TRACE_SETUP_FILES没有内容。 [ -n $AMENT_TRACE_SETUP_FILES ]没有内容if fi内代码不运行直接跳到最后一句执行
. $AMENT_CURRENT_PREFIX/setup.sh 这个脚本文件的意思是运行同一个文件夹内的setup.sh文件转入运行下面的脚本。
/opt/ros/foxy/setup.sh
# generated from ament_package/template/prefix_level/setup.sh.in# since this file is sourced use either the provided AMENT_CURRENT_PREFIX
# or fall back to the destination set at configure time
: ${AMENT_CURRENT_PREFIX:/opt/ros/foxy}# set type of shell if not already set
: ${AMENT_SHELL:sh}# function to append non-duplicate values to environment variables
# using colons as separators and avoiding leading separators
ament_append_unique_value() {# arguments_listname$1_value$2#echo listname $_listname#eval echo list value \$$_listname#echo value $_value# check if the list contains the valueeval _values\$$_listname_duplicate_ament_append_unique_value_IFS$IFSIFS:if [ $AMENT_SHELL zsh ]; thenament_zsh_to_array _valuesfifor _item in $_values; do# ignore empty stringsif [ -z $_item ]; thencontinuefiif [ $_item $_value ]; then_duplicate1fidoneunset _item# append only non-duplicatesif [ -z $_duplicate ]; then# avoid leading separatorif [ -z $_values ]; theneval $_listname\$_value\#eval echo set list \$$_listnameelse# field separator must not be a colonunset IFSeval $_listname\\$$_listname:$_value\#eval echo append list \$$_listnamefifiIFS$_ament_append_unique_value_IFSunset _ament_append_unique_value_IFSunset _duplicateunset _valuesunset _valueunset _listname
}# iterate over all parent_prefix_path files
_prefix_setup_IFS$IFS
IFS# this variable contains the concatenated prefix paths in reverse order
_UNIQUE_PREFIX_PATH# this check is used to skip parent prefix path in the Debian package
if [ -z SKIP_PARENT_PREFIX_PATH ]; then# find parent prefix path files for all packages under the current prefix_RESOURCES$(\find $AMENT_CURRENT_PREFIX/share/ament_index/resource_index/parent_prefix_path -mindepth 1 -maxdepth 1 2 /dev/null | \sort)if [ $AMENT_SHELL zsh ]; thenament_zsh_to_array _RESOURCESfifor _resource in $_RESOURCES; do# read the content of the parent_prefix_path file_PARENT_PREFIX_PATH$(\cat $_resource)# reverse the list_REVERSED_PARENT_PREFIX_PATHIFS:if [ $AMENT_SHELL zsh ]; thenament_zsh_to_array _PARENT_PREFIX_PATHfifor _path in $_PARENT_PREFIX_PATH; do# replace placeholder of current prefixif [ $_path {prefix} ]; then_path$AMENT_CURRENT_PREFIXfi# avoid leading separatorif [ -z $_REVERSED_PARENT_PREFIX_PATH ]; then_REVERSED_PARENT_PREFIX_PATH$_pathelse_REVERSED_PARENT_PREFIX_PATH$_path:$_REVERSED_PARENT_PREFIX_PATHfidoneunset _PARENT_PREFIX_PATH# collect all unique parent prefix pathif [ $AMENT_SHELL zsh ]; thenament_zsh_to_array _REVERSED_PARENT_PREFIX_PATHfifor _path in $_REVERSED_PARENT_PREFIX_PATH; doament_append_unique_value _UNIQUE_PREFIX_PATH $_pathdoneunset _REVERSED_PARENT_PREFIX_PATHdoneunset _resourceunset _RESOURCES
fi# append this directory to the prefix path
ament_append_unique_value _UNIQUE_PREFIX_PATH $AMENT_CURRENT_PREFIX
unset AMENT_CURRENT_PREFIX# store AMENT_SHELL to restore it after each prefix
_prefix_setup_AMENT_SHELL$AMENT_SHELL
# source local_setup.EXT or local_setup.sh file for each prefix path
IFS:
if [ $AMENT_SHELL zsh ]; thenament_zsh_to_array _UNIQUE_PREFIX_PATH
fi
for _path in $_UNIQUE_PREFIX_PATH; do# trace outputif [ -n $AMENT_TRACE_SETUP_FILES ]; thenecho # . \$_path/local_setup.$AMENT_SHELL\fiif [ -f $_path/local_setup.$AMENT_SHELL ]; thenif [ $AMENT_SHELL sh ]; then# provide AMENT_CURRENT_PREFIX to .sh filesAMENT_CURRENT_PREFIX$_pathfi# restore IFS before sourcing other filesIFS$_prefix_setup_IFS. $_path/local_setup.$AMENT_SHELL# restore AMENT_SHELL after each prefix-level local_setup fileAMENT_SHELL$_prefix_setup_AMENT_SHELLfi
done
unset _path
IFS$_prefix_setup_IFS
unset _prefix_setup_IFS
unset _prefix_setup_AMENT_SHELL
unset _UNIQUE_PREFIX_PATH
unset AMENT_SHELL我们自己生成的包source环境变量脚本
工作空间内 source install/setup.bash
# generated from colcon_bash/shell/template/prefix_chain.bash.em# This script extends the environment with the environment of other prefix
# paths which were sourced when this file was generated as well as all packages
# contained in this prefix path.# function to source another script with conditional trace output
# first argument: the path of the script
_colcon_prefix_chain_bash_source_script() {if [ -f $1 ]; thenif [ -n $COLCON_TRACE ]; thenecho . \$1\fi. $1elseecho not found: \$1\ 12fi
}# source chained prefixes
# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
COLCON_CURRENT_PREFIX/opt/ros/foxy
_colcon_prefix_chain_bash_source_script $COLCON_CURRENT_PREFIX/local_setup.bash# source this prefix
# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
COLCON_CURRENT_PREFIX$(builtin cd dirname ${BASH_SOURCE[0]} /dev/null pwd)
_colcon_prefix_chain_bash_source_script $COLCON_CURRENT_PREFIX/local_setup.bashunset COLCON_CURRENT_PREFIX
unset _colcon_prefix_chain_bash_source_script$0当前脚本名 $1 脚本的第一个参数
_colcon_prefix_chain_bash_source_script(){}函数的意思是第一个参数文件存在就运行第一个参数没有就报错。
所以我们在自己的工作空间source install/setup.bash相当于同时source /opt/ros/foxy/local_setup.bash
source install/local_setup.bash