GNU/Linux >> Belajar Linux >  >> Ubuntu

-eq:Operator Unary Diharapkan?

Pertanyaan ini sudah memiliki jawaban di sini :Operator Unary diharapkan

(2 jawaban)
Tutup 4 tahun yang lalu.

Saya memiliki skrip ini, yang mengubah vibrance NVIDIA-SETTINGS, ketika aplikasi/proses tertentu diluncurkan (dalam kasus saya Counter-Strike:Global Offensive game)

Skrip:

#!/bin/bash

on="1023"
off="0"
dv="0"


# RESET
sleep 10
log "RESET"
nvidia-settings -a "[gpu:0]/DigitalVibrance[DFP-0]=$off"

while true; do #daemon mode
dv=`nvidia-settings -q "[gpu:0]/DigitalVibrance[DFP-0]" -t`
  if pgrep -l csgo | grep csgo_linux
  then
#  log "Process csgo_linux found"
    if [ $dv -eq $off ]; then
      nvidia-settings -a "[gpu:0]/DigitalVibrance[DFP-0]=$on"
    fi
  else
# No process found
    if [ $dv -eq $on ]; then
      nvidia-settings -a "[gpu:0]/DigitalVibrance[DFP-0]=$off"
    fi
  fi

  if [ $dv -eq $on ]; then
  sleep 5
  else
  sleep 1
  fi

done

Apa yang salah dengan skrip ini, mengapa ini memberi saya kesalahan ini?

622 csgo_linux64
/home/matas/Desktop/vib-gui.sh: line 18: [: -eq: unary operator expected
/home/matas/Desktop/vib-gui.sh: line 28: [: -eq: unary operator expected
622 csgo_linux64
/home/matas/Desktop/vib-gui.sh: line 18: [: -eq: unary operator expected
/home/matas/Desktop/vib-gui.sh: line 28: [: -eq: unary operator expected
622 csgo_linux64
/home/matas/Desktop/vib-gui.sh: line 18: [: -eq: unary operator expected
/home/matas/Desktop/vib-gui.sh: line 28: [: -eq: unary operator expected
622 csgo_linux64
/home/matas/Desktop/vib-gui.sh: line 18: [: -eq: unary operator expected
/home/matas/Desktop/vib-gui.sh: line 28: [: -eq: unary operator expected

EDIT:

#!/bin/bash

on="1023"
off="0"
dv="0"


# RESET
sleep 10
nvidia-settings -a "[gpu:0]/DigitalVibrance[DFP-0]=$off"

while true; do #daemon mode
dv=`nvidia-settings -q "[gpu:0]/DigitalVibrance[DFP-0]" -t`
  if pgrep -l csgo | grep csgo_linux
  then
#  log "Process csgo_linux found"
    if [ "$dv -eq $off" ]; then
      nvidia-settings -a "[gpu:0]/DigitalVibrance[DFP-0]=$on"
    fi
  else
# No process found
    if [ "$dv" -eq "$on" ]; then
      nvidia-settings -a "[gpu:0]/DigitalVibrance[DFP-0]=$off"
    fi
  fi

  if [ "$dv -eq $on" ]; then
  sleep 5
  else
  sleep 1
  fi

done

Jawaban yang Diterima:

Saya menulis ulang skrip untuk Anda, seperti yang dibahas dalam obrolan:

#!/bin/bash

# set log_enabled="true" for status output, else log_enabled="false"
log_enabled="true"

on="1023"
off="0"
dv="0"


log () {
  if $log_enabled
    then 
      echo "$(date +%H:%M:%S) - $1"
  fi
}


log "waiting 10 seconds..."
sleep 10

log "resetting DigitalVibrance to $off (off)"
nvidia-settings -a "DigitalVibrance=$off" > /dev/null

log "beginning to watch for csgo_linux processes"
while true
do
  dv=$(nvidia-settings -q "DigitalVibrance" -t)
  log "current DigitalVibrance setting: $dv"

  if pgrep "csgo_linux" > /dev/null
    then  # if CS:GO is running
      if [ "$dv" -eq "$off" ]
        then  # if DigitalVibrance is currently off
          log "setting DigitalVibrance to $on (on)"
          nvidia-settings -a "DigitalVibrance=$on" > /dev/null
      fi

    else  # if CS:GO is not running
      if [ "$dv" -eq "$on" ]
        then  # if DigitalVibrance is currently on
          log "setting DigitalVibrance to $off (off)"
          nvidia-settings -a "DigitalVibrance=$off" > /dev/null
      fi
  fi

  if [ "$dv" -eq "$on" ]
    then
      sleep 5
    else
      sleep 1
  fi

done

Ini akan berfungsi dengan baik, kecuali untuk kasus jika perintah nvidia-settings -q "DigitalVibrance" -t memiliki output kosong alih-alih mengembalikan nilai pengaturan saat ini sebagai angka.

Terkait:Bagaimana cara membuat paket debian sederhana dari biner?

Ini diformat dengan lebih baik, memperbaiki beberapa kesalahan yang kami miliki di skrip asli, mengutip dengan benar variabel di if menguji dan menggunakan perintah yang benar-benar berfungsi untuk mendapatkan dan mengatur nilai pengaturan nvidia, karena kami menemukan bahwa yang ada di skrip asli tidak melakukan apa pun pada sistem Anda. Saya juga menambahkan fungsi logging opsional untuk menampilkan beberapa keluaran status di konsol, yang dapat Anda nonaktifkan dengan mengganti baris log_enabled="true" dengan log_enabled="false" .

Tentang cara memulai skrip ini secara otomatis saat login, Anda dapat membaca Bagaimana cara memulai aplikasi secara otomatis saat login? atau Bagaimana cara menambahkan skrip ke Aplikasi Startup dari baris perintah?


Ubuntu
  1. Skrip bash:Pindah dari operator backtick ke $ kurung

  2. Cifs Fstab Tidak Mulai Saat Boot Dan Mount -a Tidak Bekerja Seperti yang Diharapkan?

  3. 7 Contoh Operator Awk yang Kuat (Unary, Binary, Arithmetic, String, Assignment, Conditional, Reg-Ex Awk Operators)

  1. 7 Contoh Operator Linux Grep OR, Grep AND, Grep NOT

  2. 6 Operator Rantai Baris Perintah Bash Shell di Linux

  3. C ++ keamanan utas operator baru di linux dan gcc 4

  1. 10 Penggunaan Simbol atau Operator (!) yang Menakjubkan dan Misterius di Perintah Linux

  2. implementasi sizeof operator

  3. Penautan Simbol Linux tidak berfungsi seperti yang diharapkan