2016-03-26 4 views
-1

Это мой первый опыт использования bash в колледже, и сейчас это довольно сложно. Упражнения:Первый раз на BASH

Сделать скрипт, который принимает параметром одно слова и список файлов и добавляет слово в самом начале и окончание каждого файл

До сих пор, что я сделал это:

#!bin/bash 

word=$1; 

i=2; 
j=2; 

for [ i -le $# ] in ls 
do 
    for [ j -le $# ] in ls 
    do 
     if [ $i = $j ] then 
      $j=`word+$j+word`; 
     fi 
    done 
done 

и, конечно, это не сработает, но я действительно не знаю почему. Если кто-нибудь может помочь, было бы здорово. Извините, что на любом языке ошибка или конвенция в SO, я только что приехал сюда. Большое спасибо!

+0

Ваш скрипт должен принимать не менее * 2 * аргументы, слово и одно или несколько имен файлов. Затем вам действительно нужно изменить именованные файлы, добавив данное слово в начало и конец файлов. Вы просто пытаетесь добавить слово в начало и конец другой строки *. – chepner

ответ

2

Поскольку это упражнение, я дам ответ на то, как я бы хотел узнать об этом:

  • Ваш сценарий должен принимать произвольное число из arguments - например ./my_script.sh "my word" *.txt (обратите внимание на space and quotes в первом параметре). Существует командная оболочка с именем shift, которая будет удалить первый аргумент из списка аргументов. Список аргументов обычно называют использованием "[email protected]", но есть удобный синтаксис клавиш в Bash, чтобы перебрать все аргументы, который позволяет избежать его полностью:

    for argument 
    do 
        something with "$argument" 
    done 
    
  • упражнение, как первоначально заявлено говорит, чтобы добавить строку в начало и конец каждого файл, а не имя файла. Есть много примеров того, как это сделать на этом сайте и unix.SE.

  • Вы должны быть осторожны относительно разницы между [ (aka. test) and [[.
  • Bash не является C - командный терминатор ; неявна в конце строки (за исключением, конечно, многострочных строк, here documents и т.п.).
Смежные вопросы