linux - Bad : $ ($) 中的修饰符
问题描述
我写了小脚本并得到了错误的 mofied 错误。无法弄清楚我在这里缺少什么。cth_pythonpath 变量存在于环境中并且能够打印变量
#!/bin/csh -f
set script_rootdir = `dirname $0`
set script_abs_rootdir = `realpath $script_rootdir`
setenv PYTHONPATH $CTH_PYTHONPATH:$PYTHONPATH
错误:
Bad : modifier in $ ($).
解决方案
csh 允许使用 形式的变量修饰符$varname:x
,其中x
是一个字母。一些示例是:e
获取扩展名、:q
引用字符串等等。例如:
> set path = 'file.txt'
> echo $path:e
txt
您遇到的问题是:
setenv PYTHONPATH $CTH_PYTHONPATH:$PYTHONPATH
相同的语法:$CTH_PYTHONPATH
以 a 结尾:
,因此它尝试应用$
修饰符,但此修饰符不存在,因此您收到错误:
Bad : modifier in $ ($).
解决方案是使用${varname}
显式告诉 csh 变量名何时结束或使用引号:
setenv PYTHONPATH ${CTH_PYTHONPATH}:${PYTHONPATH}
setenv PYTHONPATH "$CTH_PYTHONPATH":"$PYTHONPATH"
我建议顺便引用变量;它将防止空间等问题;我可能会这样写:
setenv PYTHONPATH "${CTH_PYTHONPATH}:${PYTHONPATH}"
请注意,如果您可以顺便提供帮助,我不建议使用 csh ;这是一个有很多问题的旧外壳,包括各种情况下的奇怪错误。请注意您遇到的错误如何不打印行号或非常有帮助。
推荐阅读
- c# - PDF 文件不在 Windows 窗体的 webBrowser 控件中
- ruby - ruby IO.gets 是否从缓冲区读取?
- vue.js - spa nuxt 项目中的 .nuxt 文件夹与 dist 文件夹
- math - 计算弧度以使玩家面对单位 - 从玩家(X,Y)到单位(X,Y)
- git - 如何返回上一次提交并将旧文件复制到新文件夹
- php - php:给定一个艺术家列表,并且必须确定哪个艺术家的名字最长
- jquery - 使用 jQuery 更改没有 ID 的 HTML Span
- javascript - 在 div 标签中使用 javascript 将 UL 添加到 HTML 时被捕获并出错
- python - 将Python中十六进制格式的字符串正确转换为二进制数据
- sequence - IBM BPM 8.5 按自定义顺序的多实例序列流