Использование части текста для управления перенаправлением с помощью транспортира

Родительская оболочка, вызывающая bash show_files.sh *, расширяет * для вас.

В вашем скрипте вам нужно использовать:

for dir in "$@"
do
    echo "$dir"
done

Двойной кавычки гарантируют правильную обработку нескольких пробелов и т. д. в именах файлов.

См. также Как перебирать аргументы в сценарии оболочки bash .


Потенциально запутанное дополнение

Если вы действительно уверены, что хотите, чтобы сценарий расширил *, вы должны убедиться, что * передано сценарий (заключенный в кавычки, как и в других ответах), а затем убедитесь, что он расширен в правой части обработки (что не является тривиальным). В этот момент я бы использовал массив.

names=( $@ )
for file in "${names[@]}"
do
    echo "$file"
done

Я не часто использую $@ без двойных кавычек, но это один раз, когда это более или менее правильная вещь для делать. Сложная часть состоит в том, что он не будет обрабатывать дикие карты с пробелами в очень хорошем состоянии.

Рассмотрим:

$ > "double  space.c"
$ > "double  space.h"
$ echo double\ \ space.?
double  space.c double  space.h
$

Это работает отлично. Но попробуйте передать это как wild-card для скрипта и ... ну, давайте просто скажем, что в этот момент это будет сложно.

Если вы хотите извлечь $2 отдельно, то вы можете использование:

names=( $1 )
for file in "${names[@]}"
do
    echo "$file"
done
# ... use $2 ...

0
задан nhrcpt 16 January 2019 в 23:17
поделиться

1 ответ

Cetegory - это обещание, а не строка. Таким образом, он имеет функцию endsWith. Вам необходимо использовать окончательное значение обещания в then() следующим образом.

Cetegory.then(function(_Cetegory){
    if (_Cetegory.endsWith('Cat1')){
        expect(browser.getCurrentUrl()).toEndWith("Cat1");
    }
    else {
        expect(browser.getCurrentUrl()).toEndWith("Cat2")
    }
})
0
ответ дан yong 16 January 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: