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で問題は解決します。

編集:また、あなたも私と同じ問題を抱えているかもしれません。つまり、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

関連情報