проблема в выполнении сценария оболочки - PullRequest
0 голосов
/ 17 июня 2011

Я новичок в сценариях оболочки. Моя цель - выполнить команду ls через скрипт оболочки, но она ничего не возвращает. Моя оболочка BASH

set p = `/bin/ls`
echo $p

Где я иду не так

Ответы [ 4 ]

4 голосов
/ 17 июня 2011

Простой

p=`/bin/ls`

будет достаточно, хотя я предпочитаю конструкцию $(), так как она легко вкладывается:

pax$ p=$(/bin/ls)

pax$ echo $p
clients.dat clientupdate.sh

Что делает set (после обработки всех допустимых ключей для установки атрибутов оболочки, которых нет), так это присвоение параметров аргументам $n:

pax$ set p = `/bin/ls`

pax $ echo xx $1 xx $2 xx $3 xx $4 xx $5
xx p xx = xx clients.dat xx clientupdate.sh xx xx

со страницы man bash_builtins:

Любые аргументы, оставшиеся после обработки параметров, обрабатываются как значения для позиционных параметров и присваиваются по порядку $1, $2, ... $n.

4 голосов
/ 17 июня 2011

Для bash способ сделать это -

p="$(/bin/ls)"
# Could have done p=`/bin/ls` too, but $( is the newer way
echo "$p"

Команда set не предназначена для стандартного назначения переменных.

0 голосов
/ 04 ноября 2012

Разве ты не можешь просто написать ...

/bin/ls

... в одну строку?

0 голосов
/ 17 июня 2011

Синтаксис Bash - не ставить пробелы при назначении значений переменным, поэтому сделайте это следующим образом:

p=`/bin/ls`
echo $p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...