Script Bash: Argumento no válido

Script Bash: Argumento no válido

¿Por qué no puedo usarlo echo $1 > /sys/class/backlight/acpi_video0/brightnessen un script bash simple?

Me da el error: echo: write error: Invalid argument.

Respuesta1

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

Apuesto a que el shell está expandiendo $1 y, por lo tanto, echo cree que está recibiendo un montón de argumentos, en lugar de una cadena.

Respuesta2

Ese archivo es un archivo especial. No se puede escribir si lo que se escribe no es únicamente un número. Si intenta escribir un número con echo, obtendrá un carácter de nueva línea al final. echo -nresuelve el problema.

EDITAR:Además, es posible que tengas el problema que acabo de tener; que necesitas ser root y sudono te ayudará por ningún motivo, lo que hace que escribir sea muy tedioso su; <tu comando>; exittodo el tiempo. Para esto hice un script en Python (demasiado 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()

Respuesta3

Debes comprobar cuál $1es el valor real de. Este error significa que está intentando escribir un valor no válido; o está fuera de rango o, en general, no es un valor significativo.

A primera vista, parece que acepta un número entero en el rango de 0 a 8 (al menos para mí).

Respuesta4

Intenta usarlet

#!/bin/bash

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


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

información relacionada