Bash 스크립트: 잘못된 인수

Bash 스크립트: 잘못된 인수

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문제를 해결합니다.

편집하다:또한 제가 방금 겪었던 문제가 귀하에게도 발생할 수 있습니다. 루트여야 하고 sudo어떤 이유로든 도움이 되지 않으므로 입력하는 것이 매우 지루해집니다 su. <당신의 명령>; exit항상. 이를 위해 나는 (지나치게 야심찬) 파이썬 스크립트를 만들었습니다:

#!/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

관련 정보