Почему я не могу использовать echo $1 > /sys/class/backlight/acpi_video0/brightness
простой bash-скрипт?
У меня выдает ошибку: echo: write error: Invalid argument
.
решение1
Пытаться echo "$1" > /sys/class/backlight/acpi_video0/brightness
.
Держу пари, что оболочка расширяет $1, и поэтому echo думает, что получает набор аргументов, а не строку.
решение2
Этот файл — специальный файл. В него нельзя записать, если записано не только число. Если вы попытаетесь записать число с помощью echo
, то в конце вы получите символ новой строки. echo -n
решает проблему.
РЕДАКТИРОВАТЬ:Кроме того, у вас может быть та же проблема, что и у меня: вам нужно быть root, и он sudo
не поможет вам по какой-то причине, из-за чего очень утомительно постоянно вводить su
; <ваша команда>;. exit
Для этого я сделал (чрезмерно амбициозный) скрипт на Python:
#!/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()
решение3
Вам следует проверить фактическое значение $1
. Эта ошибка означает, что вы пытаетесь записать недопустимое значение — оно либо выходит за пределы диапазона, либо просто не имеет смысла.
На первый взгляд кажется, что он принимает целое число в диапазоне от 0 до 8 (по крайней мере, у меня).
решение4
Попробуйте использовать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