如何在Justfile的反引号包裹命令中替换变量
在Justfile中预执行命令并赋值变量的正确写法
Justfile里要实现在target执行前就把命令结果赋值给变量,同时替换变量引用,需要用Just内置的sh函数执行命令,同时注意变量替换的语法,以下是修正后的可运行代码:
MY_DIR := "path/to/my/dir" # 用sh函数执行命令,{{MY_DIR}}替换变量,:= 表示惰性求值(第一次使用时执行命令) FIRST_LINE := sh("head -n 1 {{MY_DIR}}/my_file") SECOND_LINE := sh("head -n 2 {{MY_DIR}}/my_file | tail -n 1") target1: echo "第一行内容:{{FIRST_LINE}}" echo "第二行内容:{{SECOND_LINE}}" # 这里添加你的具体操作
核心要点
- 变量替换:Justfile中引用变量必须用
{{变量名}},不能用shell的$()语法 - 命令执行:要把命令结果存到变量里,必须用
sh("命令字符串")函数,不能直接用反引号 - 求值时机控制:
- 用
:=定义:变量会在第一次被调用时才执行命令并赋值(惰性) - 用
=定义:Justfile加载时就立即执行命令并赋值(提前求值)
- 用
内容的提问来源于stack exchange,提问作者Stephen
相关产品推荐
相关产品推荐

