如何将软链接realpath的basename存入Shell变量?解决非法变量名报错
Shell变量赋值错误的解决办法
你用set命令给变量赋值是错误的操作,Shell中给普通变量赋值不需要使用set,直接采用「变量名=命令替换」的形式即可。
正确的赋值写法:
FOLDER_NUM=$(basename $(realpath "$DIR"))
或者更具可读性的嵌套写法(推荐,避免特殊字符干扰):
FOLDER_NUM=$(basename "$(realpath "$DIR")")
错误原因
set命令的作用是配置Shell选项或设置位置参数,并非用于普通变量赋值。你执行set FOLDER_NUM=$(basename $(realpath $DIR))时,Shell会把整个FOLDER_NUM=...字符串当作位置参数处理,因此触发「Illegal variable name」错误。
额外提示
给DIR加上双引号是为了兼容路径中包含空格、特殊字符的场景,让脚本更健壮。
内容的提问来源于stack exchange,提问作者Sahith .A
相关产品推荐
相关产品推荐

