Мой bash-скрипт, в структуре while zenity --progress не может работать правильно [дубликат] ⇐ Linux
Мой bash-скрипт, в структуре while zenity --progress не может работать правильно [дубликат]
Я когда-либо объявлял -A games_roms games_descriptions games_medias. Они могут быть сгенерированы корректно когда строка 356 только готова. Но когда я перенаправлю вывод в zenity --progress в конвейере, эти три ассоциативных массива окажутся пустыми. Ответ считывается из канала. Но мой вопрос - запись в трубу. Похоже, именованный канал или ProcessSubstitution не могут решить мою проблему.
241 функцияgenerate_database() 242 { 243 исполнитель 3&2 292фи 293 elif [[ "$line" =~ ^files: ]] 294 тогда 295 строка=${строка#файлы:} 296 if [[ ! "$line" =~ ^[[:space:]]*$ ]] 297 тогда 298 #Присвоение IFS здесь предназначено для удаления начальных пробелов из строки 299IFS=$OLDIFS 300 строк = `echo $line` 301 #games_roms Добавьте адрес файла ромов. Если он существует, добавьте его в массив. Если он не существует, будет сообщено об ошибке. 302 if [ -e $TRANSF_DIR/**/"$line" ] 303 тогда 304 tmp_string=`ls $TRANSF_DIR/**/"$line"` 305 eval $value[\${#$value[@]}]="\$tmp_string" 306 еще 307 echo "файл: $строка не найдена.">&2 308 фи 309IFS= 310 #games_medias В поле «Файлы» имя рома следует удалить, оставив имя каталога перед именем рома. 311 #games_medias Добавьте имя файла rom, соответствующее подкаталогу в разделе media. Если каталог не существует, будет сообщено об ошибке. 312 строка=${строка%/*} 313 if [ -d $TRANSF_DIR/**/media/"$line" ] 314 тогда 315 tmp_string=`ls -d $TRANSF_DIR/**/media/"$line"` 316 games_medias["$key"]="$tmp_string" 317 еще 318 echo "Невозможно найти директорию: /media/$line.">&2 319 фи 320фи 321 #Непустые строки с пробелами в начале относятся к значению предыдущего ключа. 322 elif [ "${line:0:1}" == " " ] 323 тогда 324IFS=$OLDIFS 325 line=`echo $line` 326 #games_roms Добавьте адрес файла ромов. Если он существует, добавьте его в массив. Если он не существует, будет сообщено об ошибке. 327 if [ -e $TRANSF_DIR/**/"$line" ] 328 тогда 329 tmp_string=`ls $TRANSF_DIR/**/"$line"` 330 eval $value[\${#$value[@]}]="\$tmp_string" 331 еще 332 echo "файл: $строка не найдена.">&2 333фи 334IFS= 335 #games_medias В поле «Файлы» имя рома следует удалить, оставив имя каталога перед именем рома. 336 #games_medias Добавьте имя файла rom, соответствующее подкаталогу в разделе media. Если каталог не существует, будет сообщено об ошибке. 337 строка=${строка%/*} 338 if [ -d $TRANSF_DIR/**/media/"$line" ] 339 тогда 340 tmp_string=`ls -d $TRANSF_DIR/**/media/"$line"` 341 games_medias["$key"]="$tmp_string" 342 еще 343 echo "Невозможно найти директорию: /media/$line.">&2 344фи 345 элиф [[ "$line" =~ ^описание: ]] 346 тогда 347 #games_descriptions 348 строка=${строка#описание: } 349 #Проверьте, существует ли соответствующий адрес ROM.Добавляйте описание только в том случае, если адрес ROM существует. 350 eval tmp_string="\${#${games_roms["$key"]}[@]}" 351 если [$tmp_string -ge 1] 352 тогда 353 games_descriptions["$key"]="$line" 354фи 355фи 356 Done|zenity --progress --width=$WIDTH --height=$HEIGHT --title="Генерация данных" --text="Чтение файла данных игры" --percentage=0 366 шопов -u globstar 367IFS=$OLDIFS 368 исполнитель 0
Я когда-либо объявлял -A games_roms games_descriptions games_medias. Они могут быть сгенерированы корректно когда строка 356 только готова. Но когда я перенаправлю вывод в zenity --progress в конвейере, эти три ассоциативных массива окажутся пустыми. Ответ считывается из канала. Но мой вопрос - запись в трубу. Похоже, именованный канал или ProcessSubstitution не могут решить мою проблему.
241 функцияgenerate_database() 242 { 243 исполнитель 3&2 292фи 293 elif [[ "$line" =~ ^files: ]] 294 тогда 295 строка=${строка#файлы:} 296 if [[ ! "$line" =~ ^[[:space:]]*$ ]] 297 тогда 298 #Присвоение IFS здесь предназначено для удаления начальных пробелов из строки 299IFS=$OLDIFS 300 строк = `echo $line` 301 #games_roms Добавьте адрес файла ромов. Если он существует, добавьте его в массив. Если он не существует, будет сообщено об ошибке. 302 if [ -e $TRANSF_DIR/**/"$line" ] 303 тогда 304 tmp_string=`ls $TRANSF_DIR/**/"$line"` 305 eval $value[\${#$value[@]}]="\$tmp_string" 306 еще 307 echo "файл: $строка не найдена.">&2 308 фи 309IFS= 310 #games_medias В поле «Файлы» имя рома следует удалить, оставив имя каталога перед именем рома. 311 #games_medias Добавьте имя файла rom, соответствующее подкаталогу в разделе media. Если каталог не существует, будет сообщено об ошибке. 312 строка=${строка%/*} 313 if [ -d $TRANSF_DIR/**/media/"$line" ] 314 тогда 315 tmp_string=`ls -d $TRANSF_DIR/**/media/"$line"` 316 games_medias["$key"]="$tmp_string" 317 еще 318 echo "Невозможно найти директорию: /media/$line.">&2 319 фи 320фи 321 #Непустые строки с пробелами в начале относятся к значению предыдущего ключа. 322 elif [ "${line:0:1}" == " " ] 323 тогда 324IFS=$OLDIFS 325 line=`echo $line` 326 #games_roms Добавьте адрес файла ромов. Если он существует, добавьте его в массив. Если он не существует, будет сообщено об ошибке. 327 if [ -e $TRANSF_DIR/**/"$line" ] 328 тогда 329 tmp_string=`ls $TRANSF_DIR/**/"$line"` 330 eval $value[\${#$value[@]}]="\$tmp_string" 331 еще 332 echo "файл: $строка не найдена.">&2 333фи 334IFS= 335 #games_medias В поле «Файлы» имя рома следует удалить, оставив имя каталога перед именем рома. 336 #games_medias Добавьте имя файла rom, соответствующее подкаталогу в разделе media. Если каталог не существует, будет сообщено об ошибке. 337 строка=${строка%/*} 338 if [ -d $TRANSF_DIR/**/media/"$line" ] 339 тогда 340 tmp_string=`ls -d $TRANSF_DIR/**/media/"$line"` 341 games_medias["$key"]="$tmp_string" 342 еще 343 echo "Невозможно найти директорию: /media/$line.">&2 344фи 345 элиф [[ "$line" =~ ^описание: ]] 346 тогда 347 #games_descriptions 348 строка=${строка#описание: } 349 #Проверьте, существует ли соответствующий адрес ROM.Добавляйте описание только в том случае, если адрес ROM существует. 350 eval tmp_string="\${#${games_roms["$key"]}[@]}" 351 если [$tmp_string -ge 1] 352 тогда 353 games_descriptions["$key"]="$line" 354фи 355фи 356 Done|zenity --progress --width=$WIDTH --height=$HEIGHT --title="Генерация данных" --text="Чтение файла данных игры" --percentage=0 366 шопов -u globstar 367IFS=$OLDIFS 368 исполнитель 0
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Невозможно найти ошибку символа после оператора while в моем цикле do- while [дубликат]
Anonymous » » в форуме JAVA - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-