Как в параметрах скрипта передать две строки

от admin

Как передать две строки в качестве параметров Perl-скрипту?

Я написал Perl-скрипт, который извлекает содержимое листа Excel. Сценарий распечатывает содержимое листа Excel в командной строке. С чем я застрял? Я хочу что-то вроде интеллектуального анализа данных с Perl. Мой лист excel выглядит так.

Предположим, если я даю myscript.pl ‘SUNY’ ‘MARK’ Он должен извлечь 40% и распечатать его в командной строке.

я использую Spreedsheet::Parseexcel уже. Но я совершенно не знаю, как реализовать эту функцию. Использует ARGV[] хороший подход? Помогите мне ребята? Любая идея приветствуется..

задан 04 марта ’13, 22:03

Возможно вы имеете в виду @ARGV . — TLP

Я думаю, вам следует пойти и немного больше изучить Perl вместо того, чтобы задавать вопросы здесь. — Borodin

1 ответы

будет хранить SUNY внутри $ARGV[0] и MARK внутри $ARGV[1]. Затем вы перебираете строки, проверяя ячейки 0 и 1, чтобы увидеть, соответствуют ли они $ARGV[0] и $ARGV[1], и если да, возвращайте ячейку 2.

ответ дан 04 мар ’13, в 22:03

спасибо за быстрый ответ . Но это должно быть правильно динамическим . так как я бы не искал только SUNY и MARK, но много совпадений, таких как MIT JOHN, UIUC LIU, SAM HARVARD (SAY), поэтому я должен сделать много, если условий для покрытия всей электронной таблицы правильно ?? — user2121709

Нет. Как я уже сказал: переберите строки листа Excel и сопоставьте ячейки A и B с $ARGV[0] и $ARGV[1], и если это так, то распечатайте ячейку C. — ugexe

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками perl or задайте свой вопрос.

Основы Bash-скриптинга для непрограммистов. Часть 2

В первой части статьи мы рассмотрели командные оболочки, профили, синонимы и первые команды. Под спойлером я также рассказал, как развернуть тестовую виртуальную машину.

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

Скрипты

Для выполнения нескольких команд одним вызовом удобно использовать скрипты. Скрипт – это текстовый файл, содержащий команды для shell. Это могут быть как внутренние команды shell, так и вызовы внешних исполняемых файлов.

Как правило, имя файла скрипта имеет окончание .sh, но это не является обязательным требованием и используется лишь для того, чтобы пользователю было удобнее ориентироваться по имени файла. Для интерпретатора более важным является содержимое файла, а также права доступа к нему.

Перейдем в домашнюю директорию командой cd

и создадим в ней с помощью редактора nano ( nano script.sh )файл, содержащий 2 строки:

Чтобы выйти из редактора nano после набора текста скрипта, нужно нажать Ctrl+X, далее на вопрос «Save modified buffer?» нажать Y, далее на запрос «File Name to Write:» нажать Enter. При желании можно использовать любой другой текстовый редактор.

Скрипт запускается командой ./<имя_файла> , т.е. ./ перед именем файла указывает на то, что нужно выполнить скрипт или исполняемый файл, находящийся в текущей директории. Если выполнить команду script.sh , то будет выдана ошибка, т.к. оболочка будет искать файл в директориях, указанных в переменной среды PATH, а также среди встроенных команд (таких, как, например, pwd):

Ошибки не будет, если выполнять скрипт с указанием абсолютного пути, но данный подход является менее универсальным: /home/user/script.sh . Однако на данном этапе при попытке выполнить созданный файл будет выдана ошибка:

Проверим права доступа к файлу:

Из вывода команды ls видно, что отсутствуют права на выполнение. Рассмотрим подробнее на картинке:

Права доступа задаются тремя наборами: для пользователя, которому принадлежит файл; для группы, в которую входит пользователь; и для всех остальных. Здесь r, w и x означают соответственно доступ на чтение, запись и выполнение.

В нашем примере пользователь (test) имеет доступ на чтение и запись, группа также имеет доступ на чтение и запись, все остальные – только на чтение. Эти права выданы в соответствии с правами, заданными по умолчанию, которые можно проверить командой umask -S . Изменить права по умолчанию можно, добавив вызов команды umask с нужными параметрами в файл профиля пользователя (файл

/.profile), либо для всех пользователей в общесистемный профиль (файл /etc/profile).

Для того, чтобы установить права, используется команда chmod <параметры> <имя_файла> . Например, чтобы выдать права на выполнение файла всем пользователям, нужно выполнить команду:

Чтобы выдать права на чтение и выполнение пользователю и группе:

Чтобы запретить доступ на запись (изменение содержимого) файла всем:

Также для указания прав можно использовать маску. Например, чтобы разрешить права на чтение, запись, выполнение пользователю, чтение и выполнение группе, и чтение – для остальных, нужно выполнить:

Будут выданы права -rwxr-xr— :

Указывая 3 цифры, мы задаем соответствующие маски для каждой из трех групп. Переведя цифру в двоичную систему, можно понять, каким правам она соответствует. Иллюстрация для нашего примера:

Символ – перед наборами прав доступа указывает на тип файла ( – означает обычный файл, d – директория, l – ссылка, c – символьное устройство, b – блочное устройство, и т. д.). Соответствие числа, его двоичного представления и прав доступ можно представить в виде таблицы:

Как в параметрах скрипта передать две строки

Как передать две строки в качестве параметров Perl-скрипту?

Я написал Perl-скрипт, который извлекает содержимое листа Excel. Сценарий распечатывает содержимое листа Excel в командной строке. С чем я застрял? Я хочу что-то вроде интеллектуального анализа данных с Perl. Мой лист excel выглядит так.

Предположим, если я даю myscript.pl ‘SUNY’ ‘MARK’ Он должен извлечь 40% и распечатать его в командной строке.

я использую Spreedsheet::Parseexcel уже. Но я совершенно не знаю, как реализовать эту функцию. Использует ARGV[] хороший подход? Помогите мне ребята? Любая идея приветствуется..

задан 04 марта ’13, 22:03

Возможно вы имеете в виду @ARGV . — TLP

Я думаю, вам следует пойти и немного больше изучить Perl вместо того, чтобы задавать вопросы здесь. — Borodin

1 ответы

будет хранить SUNY внутри $ARGV[0] и MARK внутри $ARGV[1]. Затем вы перебираете строки, проверяя ячейки 0 и 1, чтобы увидеть, соответствуют ли они $ARGV[0] и $ARGV[1], и если да, возвращайте ячейку 2.

ответ дан 04 мар ’13, в 22:03

спасибо за быстрый ответ . Но это должно быть правильно динамическим . так как я бы не искал только SUNY и MARK, но много совпадений, таких как MIT JOHN, UIUC LIU, SAM HARVARD (SAY), поэтому я должен сделать много, если условий для покрытия всей электронной таблицы правильно ?? — user2121709

Читать:
Как обновить gimp в windows

Нет. Как я уже сказал: переберите строки листа Excel и сопоставьте ячейки A и B с $ARGV[0] и $ARGV[1], и если это так, то распечатайте ячейку C. — ugexe

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками perl or задайте свой вопрос.

Как в скрипт на bash через консоль передать строку параметром?

Подскажите как можно передать строку параметром для bash скрипта.

Пробовал вызвать так:

Скрипт воспринимает текст как два параметра, хочу разобраться как можно сделать, чтобы понимал как один параметр.

Максим Сальников's user avatar

Bash переменные вставляет всегда как один параметр внутри двойных кавычек и разбивает по пробелам если кавычек нет. У вас $1 стоит вне кавычек. Нужно написать так:

sercxjo's user avatar

  1. в одинарных кавычках должно работать: ba.sh ‘one two’
  2. в двойных кавычках: ba.sh «one two»
  3. экранировать каждый пробел: ba.sh один\ два

Тестовый bash скрипт:

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

Многострочные переменные в JavaScript

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

  • Центральный Javascript-ресурс
  • Перевод строки

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все.

Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса.

Name already in use

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Лабораторная работа №1

Создайте свой каталог в директории /home/user/ , все скрипты создавайте внутри этого каталога или его подкаталогов. (mkdir lab1)

Напишите скрипты, решающие следующие задачи:

  1. В параметрах скрипта передаются две строки. Вывести сообщение о равенстве или неравенстве переданных строк.
  2. В параметрах при запуске скрипта передаются три целых числа. Вывести максимальное из них.
  3. Считывать строки с клавиатуры, пока не будет введена строка «q» . После этого вывести последовательность считанных строк в виде одной строки.
  4. Считывать с клавиатуры целые числа, пока не будет введено четное число. После этого вывести количество считанных чисел.
  5. Создать текстовое меню с четырьмя пунктами. При вводе пользователем номера пункта меню происходит запуск редактора nano, редактора vi , браузера links или выход из меню.
  6. Если скрипт запущен из домашнего директория, вывести на экран путь к домашнему директорию и выйти с кодом 0 . В противном случае вывести сообщение об ошибке и выйти с кодом 1 .

Предъявите скрипты преподавателю и получите вопрос или задание для защиты лабораторной работы.

Лабораторная работа №2

Создать файл errors.log , в который поместить все строки из всех доступных для чтения файлов директории /var/log/ , начинающиеся c последовательности символов ACPI , без указания имени файла, в котором встретилась строка. Вывести на экран те строчки из получившегося файла, которые содержат полные имена каких-либо файлов.

Создать full.log , в который вывести строки файла /var/log/Xorg.0.log , содержащие предупреждения и информационные сообщения, заменив маркеры предупреждений и информационных сообщений на слова Warning: и Information: , чтобы в получившемся файле сначала шли все ошибки, а потом все предупреждения. Вывести этот файл на экран.

Создать файл emails.lst , в который вывести через запятую все адреса электронной почты, встречающиеся во всех файлах директории /etc .

Найти в директории /bin все файлы, которые являются сценариями, и вывести на экран полное имя файла с интерпретатором, наиболее часто используемым в этих сценариях (только полное имя файла).

Вывести список пользователей системы с указанием их UID , отсортировав по UID . Сведения о пользователей хранятся в файле /etc/passwd . В каждой строке этого файла первое поле – имя пользователя, третье поле – UID . Разделитель – двоеточие.

Подсчитать общее количество строк в файлах, находящихся в директории /var/log/ и имеющих расширение log .

Вывести три наиболее часто встречающихся слова из man по команде bash длиной не менее четырех символов.

Лабораторная работа №3

Создать скрипт, который должен выполнять следующие действия:

  1. Создать директорию test в домашней директории пользователя.
  2. Создать в ней файл list , содержащий список всех файлов и поддиректориев домашней директории (включая скрытые) в таком виде, что можно однозначно определить какая из записей является именем файла, а какая — названием директории.
  3. Создать в директории test директорию links .
  4. Создать в директории links жесткую ссылку на файл list с именем list_link .
  5. Удалить файл

Лабораторная работа №4

Создайте текстовый файл в котором запишите последовательность команд для выполнения каждого из нижеследующих заданий. Для команд, имеющих интерактивный интерфейс – опишите последовательность выбора управляющих команд и их параметров. Если решение заключается в изменении конфигурационного файла – укажите название файла и вносимые или изменяемые строки.

Как переменной присвоить значение в несколько строк в скрипте Bash

Оператор << называется here document. С его помощью можно ввести строку состоящую из нескольких строк или присвоить переменной многострочное значение.

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

Выведем значение переменной:

То есть общий вид конструкции присвоения переменной многострочного значения:

Обратите внимание, что при использовании переменной нужно заключать её в двойные кавычки, в противном случае все строки будут собраны в одну.

В следующем примере переменной GetCapabilities присваивается многострочное значение в формате XML:

Here document это весьма полезная конструкция, к примеру, с её помощью можно делать шаблоны текста, меню, выводимых данных:

Здесь вы найдёте информацию о том, как использовать << (here document) непосредственно в командной строке, а не только в скриптах.

Похожие статьи