Shell:在var中存储命令以供以后使用

时间:2011-10-19 16:31:12

标签: bash shell

例如:

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 个答案:

答案 0 :(得分:1)

你可能在谈论ALIAS

设置如下别名:

alias ls="ls /tmp/spaced"

如果您需要将'/ tmp / spaced'存储在var中,请执行以下操作:

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

如果不允许ALIAS,只需将其放入功能

即可
function mydir(){
    ls ${MYVAR}
}

答案 1 :(得分:1)

好的,找到了使用eval的解决方案:

$ CMD="ls /tmp/spaced\\ dir/"
$ eval $CMD
dir_in_spaced_dir
$

答案 2 :(得分:1)

对于bash,数组是可行的方法。

dir="/tmp/spaced dir"
CMD=( ls "$dir" )
echo "cmd has ${#CMD[@]} words"
"${CMD[@]}"  # execute the command