Tag: bash

Как «расширить» переменную bash (включенный код работает для bash, но не zsh)

Такой ответ дает хорошую работу, объясняя, как управлять передачей всех переменных с помощью команды. Я хотел бы изучить, как это сделать на основе аргументов. Наблюдайте (это было проверено в zsh ): $ program() { echo 1: $1 2: $2 3: $3; } $ run() { program "$@"; } $ run2() { echo `run $1`; } […]

создайте массив дат в сценариях bash и сопоставьте его текущей дате

На самом деле я хочу создать массив дат и сравнить его с сегодняшней датой, если он соответствует текущей дате, а затем выполнить файл test.sh иначе выйти из цикла в сценарии bash. Мне это понравилось … #!/bin/bash cd /home/user1 current_date=$(date +%Y-%m-%d) array=['2016-03-02','2016-03-010','2016-05-10'] for i in "${array[@]}" do if [ $now -eq $i ]; then echo "executing […]

Получить последнее значение переменной среды – это сценарий оболочки bash

Интересно, как мы можем получить последнее значение переменной среды в сценарии оболочки bash. Проблема, с которой я столкнулась, есть, у меня есть переменная окружения, которая может быть изменена извне несколько раз. Но когда я использую эту переменную в сценарии оболочки, она всегда отображает значение, которое было значением во время запуска. например, я написал сценарий оболочки, […]

Когда переменная массива представляет весь массив и когда элемент индексируется `0`?

В руководстве Bash говорится: Ссылка на переменную массива без индекса эквивалентна привязке к индексу 0. В оболочке Bash или POSIX существует какое-то общее правило, когда переменная массива представляет весь массив и когда он представляет элемент, проиндексированный на 0 ? Например, Кажется, что после declare переменной массива означает весь массив, а при расширении параметра это означает, […]

Сбой сценария резервного копирования с параметрами команды rsync в цитируемой переменной

Использование: версия rsync версии 3.1.0 версии 31; Linux Mint 17 (на основе: Ubuntu 14.04.3) В одном из моих резервных сценариев Bash, который использует rsync, я вставляю параметры rsync в переменную следующим образом: # Set rsync command options. rsync_options="-e ssh -axhPv" if [ "$deletion_type" = "DELETE_ON_DESTINATION" ]; then rsync_options="$rsync_options –delete" fi if [ "$run_type" = "DRY_RUN" […]

Как анализировать команды из текстового файла в сценарий bash в CLI

У меня есть сценарий bash, который получает данные: $ ./script.sh var1 var2 var3 Я хочу иметь переменные в текстовом файле в том же формате, что и в командной строке. input.txt var1 var2 var3 И я хочу каким-то образом передать этот txt моему скрипту bash в командной строке, а не в сценарии bash: ./script.sh input.txt Как […]

Ошибка синтаксиса вблизи неожиданного токена, выполняемого при циклизации строки с несколькими операторами

У меня есть следующий код как часть более крупного файла (предположим, что ${tools_urls} , ${tempFolder} являются глобальными переменными) download_tools() { for i in ${tools_urls}; do wget –no-check-certificate –directory-prefix=${tempFolder} ${i} || { echo "download failed" ; exit 3} done } Когда я запускаю скрипт, я получаю следующую ошибку: syntax error near unexpected token 'done' Однако, если […]

Как сообщить остальной системе, что моя оболочка изменилась с zsh на bash?

Я установил zsh потому что я думал, что могу предпочесть его за bash . Я этого не делаю, и, чтобы вернуть его, я использовал chsh -s /bin/bash , который, как я You may not change the shell for 'cat'. Я также изменил свою строку в /etc/passwd : cat:x:1000:1000:cat,,,:/home/cat:/bin/zsh в cat:x:1000:1000:cat,,,:/home/cat:/usr/bin/bash (из-за того, which bash дал […]

Как оболочка решает, какую из ключевых слов, встроенных и внешних команд запускать?

Когда есть встроенное имя, ключевое слово и / или внешняя команда с одинаковым именем, каков порядок, в котором оболочка Bash решает запустить? Например, time ключевого слова и time внешней команды, встроенный printf и внешняя команда printf от coreutils.

Специфика использования переменной BASH и условного IF

Кто-то может мне помочь? for k in {1..10001} do if [ -d "$k" ] then cd $k/ testfile="grep Have aims.out | cut -c11-14" cd .. fi if [[ "$testfile" == "Have" ]] then mv $k $k_OK fi done Часть, в которой следует изменить название каталогов, не работает. Я думаю, что я неправильно использую переменную testfile.

Linux и Unix - лучшая ОС в мире.