Как узнать, основан ли текущий дистрибутив на основе Arch -, Debian -и т. д.

Вероятно, вам следует использовать для этого оператор case, а не if/then/else.

Неясно, что именно вы пытаетесь сделать, но, основываясь на моем лучшем -предположении, что это такое, следующее может сделать то, что вы хотите:

#!/bin/bash
for var in "$@"; do
  case "$var" in
    f1) cp file1 ~/ ;;
    f2) cp file2 ~/ ;;
    f3) cp file3 ~/ ;;
    f4) cp file4 ~/ ;;
     *) echo "Error: Unknown argument '$var'" ; exit 1 ;;
  esac
done

Впрочем, я не вижу в этом смысла. cpне так сложна в использовании, что для нее нужен специальный скрипт-оболочка, чтобы просто скопировать файл в ваш домашний каталог. ИМО, гораздо лучше научиться использовать утилиты оболочки и командной строки -, чем скрывать от себя работу даже простых команд.

0
02.12.2021, 00:33
1 ответ

Вы можете прочитать один или несколько из этих файлов:

/etc/issue

/etc/os-release

/usr/lib/os-release

Они должны быть доступны в большинстве, если не во всех, дистрибутивах (их возможное отсутствие также может быть использовано для идентификации дистрибутива ).

Вы можете найти более подробную информацию в ответе на Является ли «/etc/issue» общим для всех дистрибутивов Linux? .

2
02.12.2021, 00:54

Теги

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