我想使用 cat <<EOF >>
将代码打印到文件中:
cat <<EOF >> brightup.sh
!/bin/bash
curr=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ $curr -lt 4477 ]; then
curr=$((curr+406));
echo $curr > /sys/class/backlight/intel_backlight/brightness;
fi
EOF
但是当我检查文件输出时,我得到了这个:
!/bin/bash
curr=1634
if [ -lt 4477 ]; then
curr=406;
echo > /sys/class/backlight/intel_backlight/brightness;
fi
我尝试放单引号,但输出也带有单引号。我怎样才能避免这个问题?
原文由 UberNate 发布,翻译遵循 CC BY-SA 4.0 许可协议
你只需要很小的改变;在
<<
之后单引号这里文档分隔符。或等效的反斜杠转义它:
没有引用,这里的文档将进行变量替换,反引号将被评估等,就像你发现的那样。
如果您需要扩展一些(但不是全部)值,则需要单独转义要阻止的值。
会产生
正如 @fedorqui 所建议的,这里是来自
man bash
的相关部分: