为了账号安全,请及时绑定邮箱和手机立即绑定

如何cat << EOF >>包含代码的文件?

如何cat << EOF >>包含代码的文件?

元芳怎么了 2019-07-26 16:42:22
如何cat << EOF >>包含代码的文件?我想使用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;fiEOF但是当我检查文件输出时,我得到了这个:!/bin/bash curr=1634if [  -lt 4477 ]; then    curr=406;    echo   > /sys/class/backlight/intel_backlight/brightness;fi我尝试使用单引号,但输出也带有单引号。我该如何避免这个问题?
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

这应该有用,我只是测试了它并且它按预期工作:没有扩展,替换,或者你发生了什么。

cat <<< '
#!/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' > file # use overwrite mode so that you don't keep on appending the same script to that file over and over again, unless that's what you want.

使用以下也有效。

cat <<< ' > file
 ... code ...'

此外,值得注意的是,当使用heredoc时,例如<< EOF,替换和可变扩展等发生。所以做这样的事情:

cat << EOF > file
cd "$HOME"echo "$PWD" # echo the current pathEOF

总是会导致变量$HOME和扩展$PWD。因此,如果您的主目录是/home/foobar当前路径/home/foobar/binfile则如下所示:

cd "/home/foobar"echo "/home/foobar/bin"

而不是预期的:

cd "$HOME"echo "$PWD"


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 1959 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信