Linux 如何在bash中将命令和选项存储在单独的变量中

Linux 如何在bash中将命令和选项存储在单独的变量中,linux,bash,options,ls,Linux,Bash,Options,Ls,我正在尝试创建一个bash脚本,它要求一个目录,然后使用对话框要求两个选项,但我似乎无法让它工作 如果目录为$directory且选项保存为$options,则我假设命令为: ls$options$directory 但到目前为止,这还没有奏效。命令失败,因为它试图将选项作为目录运行。问题的一部分似乎是清单中的输入带有双引号,但我不确定如何删除它们。此外,如果我运行: ls-A~ 然后命令可以正常运行,但是通过bash脚本和使用调试器检查的I'v,完全相同的行将失败,或者使用变量,或者作为硬编码

我正在尝试创建一个bash脚本,它要求一个目录,然后使用对话框要求两个选项,但我似乎无法让它工作

如果目录为$directory且选项保存为$options,则我假设命令为:

ls$options$directory

但到目前为止,这还没有奏效。命令失败,因为它试图将选项作为目录运行。问题的一部分似乎是清单中的输入带有双引号,但我不确定如何删除它们。此外,如果我运行:

ls-A~

然后命令可以正常运行,但是通过bash脚本和使用调试器检查的I'v,完全相同的行将失败,或者使用变量,或者作为硬编码行


我错过了什么明显的东西吗?如果有帮助的话,我可以发布我使用过的实际代码。

你可以使用$0和$1,也可以是$1和$2,我忘了 $1将是第一个参数。所以在你的情况下,应该是字典。
示例:ls car

可能是您在瓷砖扩展方面遇到了问题。对变量使用eval以允许替换

#!/bin/bash
options="-A"
directory="~"
directory=`eval "echo $directory"`
ls $options $directory

看来你得摆脱它了。您可以这样实现:

options3=${options3:1}
options3=${options3%?}


如果复选框返回多个选项,这是否有效?也就是说,如果$options=-A-l等,至少在最后一个例子中应该是有效的。你为什么不自己试试呢?options=\-l\\-a\echo$options 3 options 3=eval echo$options 3`echo$options 3 ls$options 3$directory我在前面的评论中弄乱了一些格式代码。只要使用eval echo$选项就可以去掉双引号,应该可以使用多个选项
options3=`eval echo $options3`
#!/bin/bash

directory=$2
options=$1
options2="-l"
options3="\"-l\""

# correct
#echo "options: $options"
#ls $options $directory

#echo
#echo

# correct
#echo "options: $options2"
#ls $options2 $directory

#echo
#echo

# incorrect
# echo "options: $options3"
# ls $options3 $directory

# correct
options3=${options3:1}
options3=${options3%?}
echo "options: $options3"
ls $options3 $directory

# correct
options3=`eval echo $options3`
ls $options3 $directory