Что делает данный скрипт bash

не совсем могу понять что делает команда var='ls-la' Как я понимаю скрипт создаёт пустой файл выводит его содержимое, а после копирует его в две других глобальных переменных. Или я не прав?

#!/bin/bash
#!bin/sh
    var='ls-la'
    touch $1
    echo $var > $1
    cp $3 $2

Ответы (2 шт):

Автор решения: KoVadim

скрипт принимает 3 параметра - имена файлов. вначале создает файл с именем первого параметра и записывает туда текст 'ls-la' (странный текст, но думаю, там опечатка). А потом копирует файл, имя которого в третьем параметре в файл, имя которого - второй параметр. И все.

→ Ссылка
Автор решения: Stanislav Volodarskiy

Кажется этот скрипт - жертва редактора, который не придаёт значения знакам препинания.

#!/bin/bash
#!bin/sh

# первая строка выше - shebang.
# Выбирает интерпретатор для кода в этом файле (Unix only)
# вторая строка - испорченный бывший shebang. Ничего не значит.

# полагаю, редактор поменял кавычки и подредактировал пробелы
# получилось присвоение странной строки,
# а должно быть выполнение осмысленной команды
# было var='ls-la'
var=`ls -la`

# создаёт пустой файл с именем первого аргумента,
# если файл уже существует, обновляет его дату
# (следующая команда делает эту бесполезной)
touch $1

# записываем текст из переменной var в файл с именем из первого аргумента
# переменная var теперь содержит многострочный текст,
# заключим её в двойные кавычки, чтобы сохранить форматирование
# было echo $var > $1
echo "$var" > $1

# копируем файл с именем в третьем аргументе
# в файл с именем во втором аргументе
cp $3 $2
→ Ссылка