Скрипт Bash, сбивающий с толку аргумент командной строки $ 1 против awk $ 11 - PullRequest
0 голосов
/ 29 декабря 2010

Я работаю над сценарием оболочки, который принимает аргумент командной строки (строка 1). В строке 2 я хочу вывести результат awk '{print $ 11}' и сохранить его в CURRENT_TAG, однако, когда он сталкивается с print $ 11, он автоматически пытается вставить аргумент командной строки $ 1 в это место. Как я могу избежать этого? Помещение \ перед $ не работает.

Спасибо

WORKING_COPY=$1;
CURRENT_TAG=$(ls -l ~/working/svn/$WORKING_COPY/tags/current | grep "current \-\>" | awk '{print $11}');

Ответы [ 3 ]

3 голосов
/ 29 декабря 2010

Из вашего вопроса кажется, что current - это символическая ссылка (или, возможно, каталог с именем current, содержащий символическую ссылку, также называемую current), и вы пытаетесь выяснить, на что ссылается эта ссылка.Для этого вы можете использовать readlink.

CURRENT_TAG=$(readlink ~/working/svn/$WORKING_COPY/tags/current)

ИЛИ

CURRENT_TAG=$(readlink ~/working/svn/$WORKING_COPY/tags/current/current)
0 голосов
/ 29 декабря 2010

Как уже отмечалось, - это плохая идея использовать ls таким образом.

Вы говорите, что содержимое CURRENT_TAG становится таким же, как и WORKING_COPYс добавленной «1»?

Обратите внимание, что экранирование > делает его особенным, а не обычным.Вы должны сделать grep "current ->".

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

awk '/current ->/{print $11}'
0 голосов
/ 29 декабря 2010

Модифицированная версия вашего скрипта прекрасно работает для меня.Как вы выполняете свой сценарий?

markrose@shuttle:/tmp$ cat test.sh
#!/bin/bash

WORKING_COPY=$1;
CURRENT_TAG=$(ls -l /tmp/$1 | awk '{print $1}');
echo $1
echo $CURRENT_TAG
markrose@shuttle:/tmp$ ./test.sh blog.jpeg 
blog.jpeg
-rw-r--r--
markrose@shuttle:/tmp$ bash ./test.sh blog.jpeg
blog.jpeg
-rw-r--r--

Для чего бы то ни было, мой вывод ls -l имеет только 8 полей, последнее - имя файла (по крайней мере, имя файла / путь без пробелов и LFSпеременная окружения не задана).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...