linux中的绝对路径 lt gt,linux – 如何cat <>包含代码的文件?

我想使用cat<<< EOF>>将代码打印到文件中:

cat <> 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

我尝试使用单引号,但输出也带有单引号.我该如何避免这个问题?

解决方法:

你只需要一个微小的变化;在<

cat <> brightup.sh

或等效反斜杠 – 逃避它:

cat <>brightup.sh

如果没有引用,这里的文档将进行变量替换,反引号将被评估等,就像你发现的那样.

如果需要扩展某些值,而不是所有值,则需要单独转义要防止的值.

cat <>brightup.sh

#!/bin/sh

# Created on $(date # : <

echo "\$HOME will not be evaluated because it is backslash-escaped"

EOF

会产生

#!/bin/sh

# Created on Fri Feb 16 11:00:18 UTC 2018

echo "$HOME will not be evaluated because it is backslash-escaped"

正如@fedorqui所建议的,这是man bash的相关部分:

Here Documents

This type of redirection instructs the shell to read input from the

current source until a line containing only delimiter (with no

trailing blanks) is seen. All of the lines read up to that point are

then used as the standard input for a command.

The format of here-documents is:

06004

No parameter expansion, command substitution, arithmetic expansion,

or pathname expansion is performed on word. If any characters in word

are quoted, the delimiter is the result of quote removal on word, and

the lines in the here-document are not expanded. If word is

unquoted, all lines of the here-document are subjected to parameter

expansion, command substitution, and arithmetic expansion. In the

latter case, the character sequence \ is ignored, and \

must be used to quote the characters \, $, and `.

标签:heredoc,linux,unix,sh

来源: https://codeday.me/bug/20190915/1804868.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值