Проблемы с базовым именем в цикле

Существует названная программа gksudo который просит у пользователя собственный пароль этого пользователя, не пароля root. Не забывайте добавлять этого пользователя к группе колеса или sudoers.

2
24.06.2014, 02:14
2 ответа

Вы заключили в одинарные кавычки '/ home / rafaeldaddio / Documents / teste / *' . Это означает, что он ищет один файл с именем * внутри teste . (Сомневаюсь, что у вас есть такой файл, или это то, что вы задумали!).

Это означает, что ваш цикл for работает с одной записью и передает этот файл * в basename.

Затем out = $ (basename $ arqin) расширяется до out = $ (basename file1 file2 file3 ... fileN) , что, конечно, слишком много аргументов для basename .

Простое решение: уберите цитаты из примерно / home / rafaeldaddio / Documents / teste / * .

5
27.01.2020, 21:54

@BenXO уже говорил вам, почему это провалилось, но вам все равно не нужен сценарий для чего-то настолько простого. Вы можете просто вставить это прямо в командную строку:

for arqin in /home/rafaeldaddio/Documents/teste/*; do 
    cat "$arqin" | 
      /home/rafaeldaddio/Documents/LX-Tagger/POSTagger/Tagger/run-Tagger.sh > \
        /home/rafaeldaddio/Documents/$(basename "$arqin"); 
done

Или, так как если cat foo | программа работает, программа foo почти наверняка тоже работает, и если предположить, что /home/rafaeldaddio/ - это ваш домашний каталог, то вы можете упростить его:

for arqin in ~/Documents/teste/*; do
 ~/Documents/LX-Tagger/POSTagger/Tagger/run-Tagger.sh "$arqin" > \
     ~/Documents/$(basename "$arqin");
done
1
27.01.2020, 21:54

Теги

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