Fish Shell中${变量语法报错求助:CUE转CHD命令执行失败
问题原因
- 第一条命令直接在Fish Shell中执行,Fish不兼容Bash/Zsh的
${变量%后缀}这类参数截断语法,因此触发${ is not a valid variable in fish}的语法错误。 - 第二条命令里的
${1%.*}被包裹在sh -c的单引号中,这段代码实际是交给POSIX Shell(如sh/bash)解析执行的,Fish仅负责将整个字符串传递给sh,不会解析内部语法,所以能正常运行。
Fish Shell下的替代命令
方法1:用Fish内置string工具替换后缀
for i in *.cue chdman createcd -i "$i" -o (string replace -s '.cue' '.chd' "$i") end
-s参数表示精确匹配字符串替换,操作简单直接,若需处理其他后缀,修改对应字符串即可。
方法2:用basename命令获取无后缀文件名
for i in *.cue chdman createcd -i "$i" -o "(basename "$i" .cue).chd" end
basename "$i" .cue会去除文件名的.cue后缀,再拼接.chd即可得到目标文件名。
内容的提问来源于stack exchange,提问作者h8uthemost
相关产品推荐
相关产品推荐

