с помощью 'для файла в' для выбора затем добираются несколько дополнительных имен, базовое имя “файла” затем связывают дополнительное имя

.. [

] Ищите способ использовать пикилл вместо того, чтобы убивать. Он вернет 1, если ни один процесс не будет соответствовать. Проверьте статус выхода pkill, чтобы определить, действительно ли он убил что-либо [

].
1
15.04.2015, 14:06
1 ответ

Если вы используете Bash , вы можете установить опцию nullglob :

  nullglob
    If set, bash allows patterns which match no  files  (see
    Pathname  Expansion  above)  to expand to a null string,
    rather than themselves.

, чтобы проиллюстрировать:

$ ls
test1.dummy  test1.jpeg  test1.jpg  test1.test
$ shopt nullglob
nullglob        off
$ for file in *.{jpg,jpeg,test,avi}; do 
    echo "$file size is $(stat -c '%s' "$file")"; 
  done
test1.jpg size is 0
test1.jpeg size is 0
test1.test size is 0
stat: cannot stat ‘*.avi’: No such file or directory
*.avi size is 

и если мы активируем Nullglob :

$ shopt -s nullglob 
$ shopt nullglob ## just to demonstrate that it is on
nullglob        on
$ for file in *.{jpg,jpeg,test,avi}; do      
    echo "$file size is $(stat -c '%s' "$file")"
 done
test1.jpg size is 0
test1.jpeg size is 0
test1.test size is 0

Кроме того, вы можете просто убедиться, что файл существует (я также использую этот пример Top, демонстрируй, что расширение скобки здесь не нужна):

$ for file in *jpg *jpeg *test *avi; do
    [ -e "$file" ] &&  echo "$file size is $(stat -c '%s' "$file")" 
  done
test1.jpg size is 0
test1.jpeg size is 0
test1.test size is 0
2
27.01.2020, 23:37

Теги

Похожие вопросы