¿Por qué no puedo usarlo echo $1 > /sys/class/backlight/acpi_video0/brightness
en 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 -n
resuelve el problema.
EDITAR:Además, es posible que tengas el problema que acabo de tener; que necesitas ser root y sudo
no te ayudará por ningún motivo, lo que hace que escribir sea muy tedioso su
; <tu comando>; exit
todo 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 $1
es 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