Bash에서 스크립트를 만들었습니다.
#!/bin/bash
zen(){
mark=$(zenity --scale \
--text 'FREQUENCY' \
--value=$la \
--min-value=0\
--max-value=5000 \
--step=1)
}
la=500
echo "Script for shim. Regulary frequency"
zen
while [ true ]
do
case $? in
0) echo $mark
la=$mark
#zenity --notification --window-icon="info" --text="Thank you!" --timeout=1
zen
;;
1)
# exit 1
# sl -e || break
# break
# return 1
;;
esac
done
echo "thanks for using!"
종료점을 제외하고는 잘 작동합니다. # 내가 시도한 옵션 앞에는 "사용해주셔서 감사합니다!" 대신 이 스크립트에서 적절한 종료가 허용되지 않습니다. 그렇지 않으면 터미널에 아무것도 표시되지 않습니다.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
^XThis option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
This option is not available. Please see --help for all possible usages.
.........................................
스크립트를 종료하려고 하면 zenity에 문제가 있는 것 같습니다. 오류를 찾아봤고 유일하게 합리적인 아이디어는 zenity를 업그레이드하는 것이었습니다. 이미 업그레이드했지만 새로운 결과는 나오지 않았습니다...
그렇다면 어떻게 수정하고 이 스크립트를 올바르게 중단할 수 있을까요..?
내 운영 체제는 Ubuntu Server 16.04입니다.
편집하다
내 스크립트를 사용하여 zenity부터 사용자가 "취소"를 클릭하는 순간까지 반복되는 문제를 해결하고 싶습니다.
답변1
$?
마지막 명령 실행의 종료 상태입니다. 귀하의 경우 이것은 명령입니다 ( 루프 조건 으로 문자열이 비어 있지 않은지 [
테스트하는 데 사용함 ).true
while
$?
명시적으로 사용할 필요는 거의 없습니다 . 그냥 해
la=500
while
mark=$(zenity --scale \
--text 'FREQUENCY' \
--value="$la" \
--min-value=0 \
--max-value=5000 \
--step=1)
do
echo "$mark"
la=$mark
done
또는 간단하게:
mark=500
while
mark=$(zenity --scale \
--text 'FREQUENCY' \
--value="$mark" \
--min-value=0 \
--max-value=5000 \
--step=1)
do
echo "$mark"
done
답변2
호출 시 백슬래시 앞에 공백이 없으면 zenity
오류가 발생할 수 있습니다.
zen(){
mark=$(zenity --scale \
--text FREQUENCY \
--value=$la \
--min-value=0 \
--max-value=5000 \
--step=1)
}
la=500
echo "Script for shim. Regulary frequency"
zen
zen_ec=$?
while true
do
case $zen_ec in
0) echo $mark
la=$mark
#zenity --notification --window-icon="info" --text="Thank you!" --timeout=1
zen
;;
[...]