Передача переменную Python в встроенный скрипт оболочки?

Проблема, как указал @mikeserv, в кавычках. Лишние цитаты. Решение состоит в том, чтобы не иметь кавычек в вашем foo в первую очередь:

структура dir (и у нас есть cd к директории d ):

~
└── a
    └── b c
        └── d

Within d dir, у нас уже есть foo и bar , которые вы разместили.Но теперь создайте:

foo2 :

echo $PWD

bar2 :

set -x
ls "$(./foo2)"
  • у нас есть set -x , чтобы вы могли ясно видеть, что происходит

Когда вы запускаете / bar в командной строке вы увидите:

$ ./bar2
+++ ./foo2
++ ls '/home/youruser/a/b c/d'
bar  bar2  foo  foo2

Просто удалите set -x из кода, чтобы успешно получить желаемый результат:

bar  bar2  foo  foo2

Объяснение

Если вы добавите установите -x на исходную полосу и запустите, вы увидите

$ ./bar
+++ ./foo
++ ls '"/home/youruser/a/b c/d"'
ls: cannot access "/home/youruser/a/b c/d": No such file or directory

Это то же самое, как если бы вы запустили командную строку:

$ ls '"/home/youruser/a/b c/d"'
ls: cannot access "/home/youruser/a/b c/d": No such file or directory
  • Причина - лишняя " цитата
  • , которая была введена в вашем исходном foo
  • , как только " будет удален, ls работает

Таким образом, удаление кавычки в исходном foo , как мы сделали с foo2 , гарантируют, что ls получит его правильно, без лишних кавычек, и затем он будет работать.

0
01.09.2018, 09:53
1 ответ

1-й параметр в скрипте Bash называется не $first, а $1.

Второй параметр в скрипте Bash называется не $faulty_server, а $2.

0
28.01.2020, 04:13

Теги

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