Script Bash: argumento inválido

4

Por que não posso usar echo $1 > /sys/class/backlight/acpi_video0/brightness em um script bash simples?

Isso me dá o erro: echo: write error: Invalid argument.

David Thorisson
fonte
Tendo o mesmo problema ao tentar fazer a mesma coisa. Eu tentei coisas como function brightness { bright=$1; sudo su -c 'echo "$bright" > /sys/class/backlight/acpi_video0/brightness'; } também, mas eu ainda não descobri.
hangtwenty

Respostas:

2

Experimentar echo "$1" > /sys/class/backlight/acpi_video0/brightness.

Aposto que o shell está expandindo $ 1 e, portanto, o echo acha que está recebendo muitos argumentos, em vez de uma string.

surfasb
fonte
0

Você deve verificar qual é o valor real de $1 é. Esse erro significa que você está tentando gravar um valor inválido - está fora do intervalo ou, em geral, não é um valor significativo.

De relance, parece que aceita um inteiro no intervalo de 0 a 8 (pelo menos para mim).

FatalError
fonte
0

Tente usar let

#!/bin/bash

POLKU='/sys/class/backlight/radeon_bl0/brightness'


if [ $# -eq "0" ]
    then
        echo 100 > $POLKU
    else
        let gg=$1
        echo $gg > $POLKU
fi
Guest
fonte
0

Esse arquivo é um arquivo especial. Não pode ser escrito se o que está escrito não é apenas um número. Se você tentar escrever um número com echo, você receberá um caractere de nova linha no final. echo -n resolve o problema.

EDITAR: Além disso, você pode ter o problema que eu acabei de ter; que você precisa ser root e sudo não vai ajudá-lo por qualquer motivo, tornando muito tedioso digitar su; & lt; seu comando & gt ;; exit o tempo todo. Para isso eu fiz um script python (excessivamente ambicioso):

#!/usr/bin/python

from sys import *

PATH = "/sys/class/backlight/intel_backlight/brightness"

if len(argv) != 2:
    print("Usage: bright.py <brightness>")
    exit()

try:
    brightness = int(argv[1])
    if not 0 <= brightness <= 825:
        raise Exception()
except:
    print("<brightness> must be an integer between 0 and 825.")
    exit()

if brightness == 0:
    readString = raw_input("A value of 0 will turn off your screen. Are you sure you want to continue? [y/N] ")
    if readString != "y":
        exit()
elif brightness <= 5:
    with open(PATH, "r") as f:
        oldBrightness = int(f.read())
        if brightness < oldBrightness:
            readString = raw_input("A value of %i will make your screen very dark. Are you sure you want to continue? [y/N] " % brightness)
            if readString != "y":
                exit()

try:
    with open(PATH, "w") as f:
        f.write(str(brightness))
except:
    print("Failed to write to file. Are you root?")
    exit()
nijoakim
fonte