Сценарий не будет работать должным образом --новичок в написании сценариев

Вы можете использовать grepс -P, чтобы активировать возможности регулярных выражений Perl, а затем указать диапазон символов Unicode в виде класса символов, как показано ниже в качестве примера (найти свой язык Unicode для замены в классе символов ниже ).

grep -oP '\w*[\x00-\x99]+\w*' infile
0
25.04.2020, 17:22
1 ответ

Специальная переменная $?представляет собой статус выхода самой последней выполненной команды. Количество аргументов, переданных скрипту (, количество позиционных параметров )определяется как $#.

Вы не можете использовать >для сравнения, является ли значение численно большим, чем другое. Для этого используйте -gt. Тест >— это тест для определения порядка сортировки строк (" bsort после a, поэтому "b" > "a"" ).

У вас также нет ]на одном из тестов.

Я также не уверен, почему вы считываете два значения в интерактивном режиме, если вы ожидаете, что сценарий получит один аргумент в своей командной строке.

Предложение:

#!/bin/sh

if [ "$#" -ne 1 ]; then
   echo need exactly one argument >&2
   exit 1
elif [ -d "$1" ]; then
   printf '"%s" is already a directory\n' "$1" >&2
   exit 1
elif ! mkdir "$1"; then
   printf 'failed to create directory "%s"\n' "$1" >&2
   exit 1
fi

printf 'Successfully created directory "%s"\n' "$1"

$1, который используется в этом скрипте, является первым позиционным параметром (, первым аргументом, заданным скрипту ).

Промежуточный тест здесь на самом деле не нужен, так какmkdir(без его опции -p)будет жаловаться при попытке создать уже существующий каталог, поэтому это будет обнаружено последним тестом.

Этот сценарий будет вызываться, как вы предлагаете в вопросе,

./script.sh "some directory name"
1
19.03.2021, 02:26

Теги

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