Shell: команда store в var для последующего использования - PullRequest
0 голосов
/ 19 октября 2011

Например:

CMD="ls /tmp/spaced\ dir"

А при использовании команды:

$ $CMD
ls: /tmp/spaced\: No such file or directory
ls: dir: No such file or directory

Не работает с:

CMD="ls /tmp/spaced\\ dir"
CMD="ls \"/tmp/spaced dir\""
CMD="ls \"/tmp/spaced\\ dir\""
CMD='ls \"/tmp/spaced dir\"'

И мне нужен параметр "/tmp/spaced dir "быть в переменной ... Конечно, каталог" /tmp/spaced dir "существует.

Ответы [ 3 ]

1 голос
/ 19 октября 2011

ОК, найдено решение с использованием eval:

$ CMD="ls /tmp/spaced\\ dir/"
$ eval $CMD
dir_in_spaced_dir
$
1 голос
/ 19 октября 2011

Для bash, массивы - это путь.

dir="/tmp/spaced dir"
CMD=( ls "$dir" )
echo "cmd has ${#CMD[@]} words"
"${CMD[@]}"  # execute the command
1 голос
/ 19 октября 2011

Возможно, вы говорите об ALIAS

Установите псевдоним следующим образом:

alias ls="ls /tmp/spaced"

И если вам нужно, чтобы / tmp / spaced сохранялся в переменной, простокак это:

export MYVAR='/tmp/spaced'
alias cmd="ls ${MYVAR}"

Если ALIAS не разрешен, просто поместите это в ФУНКЦИЮ

function mydir(){
    ls ${MYVAR}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...