【发布时间】:2014-05-07 00:30:17
【问题描述】:
我想使用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
我尝试使用单引号,但输出也带有单引号。我怎样才能避免这个问题?
【问题讨论】:
-
你也应该修复shebang。第一行必须是字面上的
#!/bin/bash,没有别的——#!是使它成为有效的 shebang 行的原因,之后是解释器的路径。 -
顺便说一句,进程替换的现代语法是
$(command),而不是`command`。为了获取文件的内容,Bash 有$(<file)