Я пытаюсь добавить функцию к .bashrc файлу.
Функция, как предполагается, изменяет непрозрачность любого Окна приложения согласно параметру командной строки.
opa(){
sh -c 'xprop -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY $(printf 0x%x $((0xffffffff * $1 / 100)))'
}
Я попробовал вышеупомянутое однако, оно бросает эту ошибку:
sh: 1: arithmetic expression: expecting primary: "0xffffffff * / 100"
usage: xprop [-options ...] [[format [dformat]] atom] ...
Как я фиксирую это? Кроме того, есть ли любой способ установить значение по умолчанию для $1
в случае, если пользователь не передает параметра командной строки?
Не имеет никакого смысла (мне, по крайней мере) запускать подоболочку в функции оболочки - особенно не a sh
оболочка внутри .bashrc
Вместо этого Вы могли просто сделать
opa(){
xprop -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY $(printf 0x%x $((0xffffffff * $1 / 100)))
}
Если Вы хотите предоставить значение по умолчанию, можно сделать настолько использующий ${parameter:-word}
или ${parameter-word}
синтаксис (в зависимости от того, хотите ли Вы, чтобы значение по умолчанию вступило в силу когда $1
не определено или пуст, или только когда это не определено),
т.е.
opa(){
xprop -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY $(printf 0x%x $((0xffffffff * ${1:-60} / 100)))
}
Если Вы действительно хотите использовать a sh -c '...'
подоболочка, необходимо было бы передать $1
от родительского удара окружают в ребенка sh
оболочка
opa(){
sh -c 'xprop -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY $(printf 0x%x $((0xffffffff * $1 / 100)))' sh "${1:-60}"
}