如何避免在 cat << 中打印引号

How to avoid printing quotation marks in cat <<

我正在尝试使用 test.sh:

中的代码生成给定模板的文件
#!/bin/sh

#define parameters which are passed in.
ID=
DIRECTORY=

#define the template.
cat  <<EOF
./pgap.py -D singularity -r -o $DIRECTORY/$ID $DIRECTORY/$ID'_input.yaml'

我在最后一行使用了 ' 以避免跟在 $ID 变量后面的文本与其混合。但是当 运行ning 代码打印两个 '。 换句话说,当我 运行:

bash test.sh id dir

我明白了

./pgap.py -D singularity -r -o dir/id dir/id'_input.yaml'

,但我想得到:

./pgap.py -D singularity -r -o dir/id dir/id_input.yaml

替换

$DIRECTORY/$ID'_input.yaml'

$DIRECTORY/${ID}_input.yaml

您可以通过将变量名括在花括号中来实现您尝试用单引号做的事情,即 $DIRECTORY/${ID}_input.yaml