例如:
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
”确实存在。
答案 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