如何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但是當(dāng)我檢查文件輸出時(shí),我得到了這個(gè):!/bin/bash
curr=1634if [ -lt 4477 ]; then
curr=406;
echo > /sys/class/backlight/intel_backlight/brightness;fi我嘗試使用單引號(hào),但輸出也帶有單引號(hào)。我該如何避免這個(gè)問題?
3 回答

MMMHUHU
TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
這應(yīng)該有用,我只是測(cè)試了它并且它按預(yù)期工作:沒有擴(kuò)展,替換,或者你發(fā)生了什么。
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 ...'
此外,值得注意的是,當(dāng)使用heredoc時(shí),例如<< EOF
,替換和可變擴(kuò)展等發(fā)生。所以做這樣的事情:
cat << EOF > file cd "$HOME"echo "$PWD" # echo the current pathEOF
總是會(huì)導(dǎo)致變量$HOME
和擴(kuò)展$PWD
。因此,如果您的主目錄是/home/foobar
當(dāng)前路徑/home/foobar/bin
,file
則如下所示:
cd "/home/foobar"echo "/home/foobar/bin"
而不是預(yù)期的:
cd "$HOME"echo "$PWD"
添加回答
舉報(bào)
0/150
提交
取消