Проверьте, что сценарий удара имеет точно два аргумента, которые являются каталогами

Это - курсор по умолчанию. Можно работать:

 xsetroot -cursor_name left_ptr

установить указатель на стрелку влево. Как правило, это входит в Ваш .xinitrc файл.

7
16.10.2014, 03:08
2 ответа

Обработка аргументов

Обработка аргументов, которые передаются через командную строку скрипта, так же просты, как следует. Скажем, у нас был этот скрипт:

$ cat cmd.bash 
#!/bin/bash

echo "arg1: $1"
echo "arg2: $2"

Теперь запустится без аргументов:

$ ./cmd.bash 
arg1: 
arg2: 

с 1 аргументом:

$ ./cmd.bash hi
arg1: hi
arg2: 

с 2 аргументами:

$ ./cmd.bash hi bye
arg1: hi
arg2: bye

Проверка аргументов

Вы можете затем проверить, проверяют, являются ли аргументы 1 и 2, являются действительными каталогами или нет, а затем выручите или продолжайте по мере необходимости. Таким образом, мы вводим 2 чека, чтобы увидеть, являются ли 2 аргументами каталогов или нет, если не выйти.

$ cat cmd.bash
#!/bin/bash

[ -d "$1" ] || exit
[ -d "$2" ] || exit
[ $# == 2 ] || exit

echo "arg1: $1"
echo "arg2: $2"

Пример

Скажем, у нас есть эти каталоги.

$ mkdir d1 d2

$ ls -l
total 12
-rwxrwxr-x. 1 saml saml   89 Oct 14 23:13 cmd.bash
drwxrwxr-x. 2 saml saml 4096 Oct 14 23:14 d1
drwxrwxr-x. 2 saml saml 4096 Oct 14 23:14 d2

Если нам дам что-либо, кроме 2 каталогов, сценарий просто выйдет.

$ ./cmd.bash hi bye

Если нам дают 2 каталога:

$ ./cmd.bash d1 d2
arg1: d1
arg2: d2

Если нам дам более 2 аргументов:

$ ./cmd.bash d1 d2 d3

Я оставлю сравнение 2 каталогов. Для обучения Bash я направил вас к ссылке ниже для бесплатной онлайн-книги на Bash.

Ссылки

7
27.01.2020, 20:16

Проблема в вашей домашней программе.

Из вашего комментария к другому ответу вы попытались:

cp ../cambridge/security/parking ./parking2

Это вполне действительная команда в обычной оболочке. Однако проблема заключается в том, что программе тестирования не требуется ./ на ./parking2 .

При указании пути к файлу (практически с любой программой, а не только cp ), если в пути нет ведущего /, он неявно становится ./. Таким образом, вы должны быть хороши, если изменить команду на:

cp ../cambridge/security/parking parking2
-121--253388-

> заставляет grep думать, что файл является двоичным, потому что он является двоичным. Дело в том, что вы опустошили файл, но не остановили программу, которая его заполняла.

> output.txt создает output.txt , если он не существует, и усекает его до нулевой длины.

В точку выполнения > output.txt имеется процесс tee , в котором файл открыт. Усечение файла не влияет на положение записи tee . Допустим, он записал N байт перед усечением. При следующей записи tee после усечения запись начнется в позиции N . Запись в положение за текущим концом файла разрешена и заполняет начало файла пустыми байтами.

Grep видит файл, который начинается с нулевых байтов. Он правильно сообщает файл как двоичный.

Можно указать GNU grep для обработки файла как текста путем вызова grep -a . Он будет искать весь файл, включая пустые байты (которые не совпадают, поэтому они не влияют на результат, если нет совпадения в первой строке, но они могут вызвать замедление, если их много).

Лучшим решением является указание tee всегда записывать в текущем конце файла. К счастью (как отметил Стефан Шазелас ), есть вариант: tee -a (присутствует во всех POSIX-совместимых системах). Сначала нужно обрезать файл.

>output.txt
nc -l -k -p 9100 | tee -a output.txt

start В большинстве файловых систем блоки, полностью состоящие из пустых байтов, остаются нераспределенными. Этот специализированный метод сжатия называется созданием разреженного файла .

-121--60220-

Количество аргументов в параметре $ # .

if [ $# -ne 2 ]; then
  echo 1>&2 "Usage: $0 DIRECTORY1 DIRECTORY2"
  exit 3
fi

Если требуется принудительно использовать оба аргумента в качестве каталогов (в отличие от файлов других типов), проверьте их с помощью -d .

Утилита diff сравнивает два файла. При использовании опции -r выполняется рекурсивное сравнение каталогов.

diff -ru -- "$1" "$2"
6
27.01.2020, 20:16

Теги

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