我有一个 bash 脚本,旨在输出另一个 bash 脚本。我在用cat。我想评估输出脚本中的一些表达式,而不是其他表达式。
PROJECT=myproject
cat << EOF > create_dir.sh
#!/usr/bin/env bash
DATE=`date '+%y%m%d-%H%M'`
mkdir $PROJECT/\$DATE
EOF
Run Code Online (Sandbox Code Playgroud)
生成的create_dir.sh文件如下所示:
#!/usr/bin/env bash
DATE=171123-1834
mkdir myproject/$DATE
Run Code Online (Sandbox Code Playgroud)
我想要的结果是这样的:
#!/usr/bin/env bash
DATE=`date '+%y%m%d-%H%M'`
mkdir myproject/$DATE
Run Code Online (Sandbox Code Playgroud)
如何修改此脚本,以便DATE=不评估后面的表达式,同时确保$PROJECT评估它?
小智 5
您需要转义“`”符号,因为它们的意思是“执行此代码”。所以该行应该如下所示:
DATE=\`date '+%y%m%d-%H%M'\`
Run Code Online (Sandbox Code Playgroud)