.bashrc beklenmeyen EOF raporları


0

Bashrc'ye bazı işlevleri eklemeye çalışıyorum, yani:

h () { history | fgrep $1 | sort -u | cut -b 8- }

extract () {
  if [ -f $1 ] ; then
      case $1 in
          *.tar.bz2)   tar xvjf $1    ;;
          *.tar.gz)    tar xvzf $1    ;;
          *.bz2)       bunzip2 $1     ;;
          *.rar)       rar e $1       ;;
          *.gz)        gunzip $1      ;;
          *.tar)       tar xvf $1     ;;
          *.tbz2)      tar xvjf $1    ;;
          *.tgz)       tar xvzf $1    ;;
          *.zip)       unzip $1       ;;
          *.Z)         uncompress $1  ;;
          *.7z)        7z x $1        ;;
          *)           echo "I don't know how to extract '$1'." ;;
      esac
  else
      echo "'$1' is not a valid file!"
  fi
}

aşağıdaki komutu kullanarak:

echo -e "\
h () { history | fgrep \044\061 | sort -u | cut -b 8- }  

extract () {
  if [ -f \044\061 ] ; then
      case \044\061 in
          *.tar.bz2)   tar xvjf \044\061    ;;
          *.tar.gz)    tar xvzf \044\061    ;;
          *.bz2)       bunzip2 \044\061     ;;
          *.rar)       rar e \044\061       ;;
          *.gz)        gunzip \044\061      ;;
          *.tar)       tar xvf \044\061     ;;
          *.tbz2)      tar xvjf \044\061    ;;
          *.tgz)       tar xvzf \044\061    ;;
          *.zip)       unzip \044\061       ;;
          *.Z)         uncompress \044\061  ;;
          *.7z)        7z x \044\061        ;;
          *)           echo \042I don't know how to extract '\044\061'.\042 ;;
      esac
  else
      echo \042'\044\061' is not a valid file\041\042
  fi
}" >> ~/.bashrc

... ama bu sonuç bash: /home/chris/.bashrc: line 123: syntax error: unexpected end of file bash başladığında. Bu işlevleri kaldırırsam, bu hata gider. İşlevler bölümüne eklemem gereken bir kapatma ifadesi var mı?

Yanıtlar:


2

İlk satır sorun.

h () { history | fgrep $1 | sort -u | cut -b 8- }

Şununla değiştir:

h () { history | fgrep $1 | sort -u | cut -b 8- ; }

Veya:

h () {
    history | fgrep $1 | sort -u | cut -b 8-
}

Ayrıca, içine almak için daha kolay / daha temiz bir yol .bashrc yönlendirme ile (hala kaçmaya ihtiyacınız olsa da) $ ).

cat >> .bashrc << EOF
h () { history | fgrep \$1 | sort -u | cut -b 8- ; }

extract () {
  if [ -f \$1 ] ; then
      case \$1 in
          *.tar.bz2)   tar xvjf \$1    ;;
          *.tar.gz)    tar xvzf \$1    ;;
          *.bz2)       bunzip2 \$1     ;;
          *.rar)       rar e \$1       ;;
          *.gz)        gunzip \$1      ;;
          *.tar)       tar xvf \$1     ;;
          *.tbz2)      tar xvjf \$1    ;;
          *.tgz)       tar xvzf \$1    ;;
          *.zip)       unzip \$1       ;;
          *.Z)         uncompress \$1  ;;
          *.7z)        7z x \$1        ;;
          *)           echo "I don't know how to extract '\$1'." ;;
      esac
  else
      echo "'\$1' is not a valid file!"
  fi
}
EOF

+1 Bu doğru, eğer böyle yaparsanız, kaçan tüm sekizlikleri yapmaya gerek yoktur. Ama yapabilirsin \$1 daha okunabilir olurdu \044\061.
Dennis Williamson

@Dennis Williamson Neden sadece kullanmıyorsun nano ya da başka bir editör vs yönlendirme?
Just Jake

@Just Jake: Muhtemelen bunun birden fazla hesap için veya birden fazla makinede tekrar tekrar konuşlandırılması gerekiyor. Bir komut dosyasıyla yapmak onu otomatikleştiriyor. Ancak, muhtemelen daha önce yapılmamış olduğunu kontrol etmek gibi daha sağlam olması gerekir. OP bunu yapıyor olabilir ve biz sadece o kısmı görmüyoruz.
Dennis Williamson

Gerçekten de otomatikleştirilmesi gerekiyor. Bunu birkaç dakika içinde test edeceğim (şimdi akşam yemeği için). Teşekkürler! :)
Matthieu Cartier

Hımm, $1 hala kaçmaya ihtiyaç duyuyor gibi görünüyor veya yorumlanıyor (yeniden yönlendirildiğinde nasıl ondan kaçmalıyım?). Kaçırdığım bir şey mi var?
Matthieu Cartier

0

Shebang'ını olarak değiştir.

#! / bin / bash -x

ve satır satır izini almak için programı yeniden çalıştırın. Genellikle beklenmeyen dosya sonu, kapatılmamış bir alıntı veya parantezdir.


1
Shebang hiçbir şey yapmıyor gibi görünüyor (ama bu .bashrc olduğundan beklenmiyor değil mi?)
Matthieu Cartier

Sadece çalıştırmayı denedim ./.bashrc... sonunda başka bir kullanım göremiyorum ./.bashrc: line 124: syntax error: unexpected end of file. Ne aramalıyım?
Matthieu Cartier
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.